zoukankan      html  css  js  c++  java
  • 不包含某字符串的字符串匹配 (正则表达式)

    判断一个字符串中是否含有另一字符串,有很多方法,如下:
    1. 常见函数

    strstr($str, "abc");


    2. 正则匹配

    preg_match("/(abc)/is", $str);

    但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了。
    1. 如果不用正则如下就可以解决问题

    !strstr($str, "abc");


    2. 但是用正则呢,就只有这样了

    preg_match("/^((?!abc).)*$/is", $str);

    完整代码示例

    $str = "dfadfadf765577abc55fd";
    $pattern_url = "/^((?!abc).)*$/is";
    if (preg_match($pattern_url, $str))
    {
    echo "不含有abc!";
    }
    else
    {
    echo "含有abc!";
    }


    结果为:false,含有abc!

    同时匹配,包含字符串 "abc",而且不包含字符串 "xyz"的正则表达式:

    preg_match("/(abc)[^((?!xyz).)*$]/is", $str);

    该方法有效,本人使用方法如下:

        (?:(?!<\/div>).|\n)*? //匹配不含</div>的一个字符串

    但最终使用中结果是发现,该方法效率极其低下,在处理非常短文字(要匹配该正则式的相同部分的有十几个字,或者最多几十个)时间可以考虑使用,但当用于大篇幅文章解析或多处需要改种匹配时间应不使用,考虑用其他方法替代(如:先解析出要匹配该段正则式的文字,然后验证其中是否存在某段文字),正则表达式对于匹配不含特定字符串的文字段时并不是非常有效的方法.

  • 相关阅读:
    [Silverlight]常见问题
    [C#]有趣的VS扩展DebuggerVisualizer
    [EF5.0CODE FIRST]多对一及自关联映射的处理
    自定义控件传值
    关于.Net中类型转换ToInt32
    SQL版整数转IP
    SQL2008 Merge关键字用法与简例
    SQL语句,同时返回结果集,输出参数的值及return值
    多线程与异步操作实现的探讨
    SQL Prompt4 破解版
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/1994691.html
Copyright © 2011-2022 走看看