不包含某字符串的字符串匹配 (正则表达式)
2009-12-12 10:34
513 查看
判断一个字符串中是否含有另一字符串,有很多方法,如下:
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>的一个字符串
但最终使用中结果是发现,该方法效率极其低下,在处理非常短文字(要匹配该正则式的相同部分的有十几个字,或者最多几十个)时间可以考虑使用,但当用于大篇幅文章解析或多处需要改种匹配时间应不使用,考虑用其他方法替代(如:先解析出要匹配该段正则式的文字,然后验证其中是否存在某段文字),正则表达式对于匹配不含特定字符串的文字段时并不是非常有效的方法.
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>的一个字符串
但最终使用中结果是发现,该方法效率极其低下,在处理非常短文字(要匹配该正则式的相同部分的有十几个字,或者最多几十个)时间可以考虑使用,但当用于大篇幅文章解析或多处需要改种匹配时间应不使用,考虑用其他方法替代(如:先解析出要匹配该段正则式的文字,然后验证其中是否存在某段文字),正则表达式对于匹配不含特定字符串的文字段时并不是非常有效的方法.
相关文章推荐
- 不包含某字符串的字符串匹配 (正则表达式)
- 正则表达式校验字符串格式并指定必须包含某些字符
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配
- 用正则表达式提取字符串中的字符(包含数字)
- JAVA 判断字符串是否包含某个字符 正则表达式
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。
- PHP中判断字符串是否包含某个字符时,建议使用正则表达式preg_match()
- 正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
- 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字
- 正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
- C#正则表达式基础 ^[0-9] 检测字符串的首个字符是否是数字
- 使用正则表达式删除一个字符串中特定两个字符之间的所有字符
- 利用正则表达式去除字符串中的特殊字符
- Asp.net的正则表达式,匹配指定的字符和字符串。
- Java之正则表达式来判断字符串中是否包含字母
- 正则表达式匹配不包含某些字符串的技巧
- 正则表达式匹配不包含某些字符串的技巧
- 正则表达式匹配不包含某些字符串的技巧
- 正则表达式,判断一串字符串里面包含一定的形式,并解析成图片