如何用正则表达式表示不包含2950的字符串?转
使用Excel中的VBA测试如下(匹配式为:^((?!2950).)*$):
SubRegs()
DimRegExAsObject
SetRegEx=CreateObject("VBScript.regexp")
Dims,mat
s="399295078"
RegEx.Pattern="^((?!2950).)*$"
RegEx.Global=True
MsgBoxRegEx.test(s)
SetRegEx=Nothing
EndSub
如果匹配2950,则返会false,否则为true。
其中,(?!2950)表示不匹配2950,
而^表示匹配字符串的开始位置,
.表示匹配除"\n"之外的任何单个字符,
$表示匹配字符串的结束位置,
*表示匹配前面的子表达式零次或多次。
整个匹配式连起来就是:匹配空值或者匹配不含2950的字符串。
其中(?!2950)后面必须加一个".",那么(?!2950).表示不含2950且至少有一个字符。其实整个就是(?!2950)和(.)*的组合,(.)*表示空串或者任意一个串(不包含\n)。
22222222222222222
常见函数strstr($str,"abc");
正则匹配preg_match("/(abc)?/is",$str);
但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了
如果不用正则!strstr($str,"abc");就可以解决问题了
但是用正则呢,就只有这样了,"/^((?!abc).)*$/is"
33333333333333333
常见函数strstr($str,"abc");
正则匹配preg_match("/(abc)?/is",$str);
但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了
如果不用正则!strstr($str,"abc");就可以解决问题了
但是用正则呢,就只有这样了,"/^((?!abc).)*$/is"
//------------------------------------------------
复制代码代码如下:
//------------------------------------------------
结果为:false,含有abc!
$str="2b3c4d5c";
注意:[^(abc)]这个语法是逐个检查$str中的字符是否不在abc中,
preg_match("/[^(abc)]/s",$str,$arr);
其中字符2就不在abc中,所以$arr返回值为2;
同时匹配,包含字符串"abc",而且不包含字符串"xyz"
"/(abc)[^((?!xyz).)*$]/s"
详细出处参考:http://www.jb51.net/article/19910.htm
44444444444444444444
(?!((\w)*java(\w)*)
这个是不匹配的
555555555555555555555555
Stringregex="(?:(?!party).)*";
欢迎转载,但请保留出处,本文章转自[华软网]原文链接:http://www.huarw.com/program/java/JAVA02/200806/1602138_2.html
6666666[此问题的推荐答案]
^((?!sound).)+$
这个只要有sound出现就不匹配.
有的表达式可能需要MULTILINE多行模式.
/c/sound/1.mp3不匹配
/c/so/und/1.mp3匹配
/c/s/1.mp3匹配
/c/qwersoundzxcv/1.mp3不匹配
找出所有img标签的,没有带说明属性alt的标签:
正则:]*?alt[^]*?>).*?>
例子:
扩展,如果要找没有带title属性的a应该是:
正则:]*?title[^]*?>).*?>
例子: