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>的一个字符串

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

  • 相关阅读:
    WPF 策略模式
    老陈 WPF
    老陈 ASP.NET封装
    小石头 封装
    典型用户故事
    整数的四则运算
    对git的认识
    如何学习计算机
    团队编程二——web应用之人事管理系统
    团队编程——web应用之人事管理系统
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/1994691.html
Copyright © 2011-2022 走看看