php 正则 不包含某字符串的正则表达式
2019/6/29 21:05:05
本文主要是介绍php 正则 不包含某字符串的正则表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
常见函数 strstr($str, “abc”);
正则匹配 preg_match(”/(abc)?/is”, $str);
但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了
如果不用正则 !strstr($str, “abc”); 就可以解决问题了
但是用正则呢,就只有这样了,”/^((?!abc).)*$/is”
//------------------------------------------------
<?php
$str = "dfadfadf765577abc55fd";
$pattern_url = "/^((?!abc).)*$/is";
if (preg_match($pattern_url, $str)){
echo "不含有abc!";
}else{
echo "含有abc!";
}
?>
//------------------------------------------------
结果为:false,含有abc!
$str = “2b3c4d5c”;
注意:[^(abc)] 这个语法是逐个检查$str中的字符是否不在 a b c中,
preg_match(”/[^(abc)]/s”, $str, $arr);
其中字符 2 就不在 a b c 中,所以$arr返回值为2;
同时匹配,包含字符串 “abc”,而且不包含字符串 “xyz”
“/(abc)[^((?!xyz).)*$]/s”
以下是补充:
判断一个字符串中是否含有另一字符串,有很多方法,如下:
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>的一个字符串
但最终使用中结果是发现,该方法效率极其低下,在处理非常短文字(要匹配该正则式的相同部分的有十几个字,或者最多几十个)时间可以考虑使用,但当用于大篇幅文章解析或多处需要改种匹配时间应不使用,考虑用其他方法替代(如:先解析出要匹配该段正则式的文字,然后验证其中是否存在某段文字),正则表达式对于匹配不含特定字符串的文字段时并不是非常有效的方法.
这篇关于php 正则 不包含某字符串的正则表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-01-0939. 干货系列从零用Rust编写负载均衡及代理,正则及格式替换
- 2024-01-08如何编写高效的正则表达式?
- 2023-12-29"Matlab中的正则表达式:强大而灵活的工具"
- 2023-09-30这个正则 为啥同样的单号第二个就提取不出来?
- 2023-06-086.2 re 正则表达式
- 2023-06-06将字符串里的\x01,\x02这些替换掉用正则表达式无效?
- 2023-05-24正则表达式详解
- 2023-05-17我让gpt写了一段正则表达式代码,可是运行报错,可以帮忙看看哪里出了问题?
- 2023-04-27我要提取text4文本中的邮箱号 正则应该怎么写?
- 2023-04-15bash shell 无法使用 perl 正则