如何用正则表达式表示不包含2950的字符串?转

  使用Excel中的VBA测试如下(匹配式为:^((?!2950).)*$):
  Sub Regs()
  Dim RegEx As Object
  Set RegEx = CreateObject("VBScript.regexp")
  Dim s, mat
  s = "399295078"
  RegEx.Pattern = "^((?!2950).)*$"
  RegEx.Global = True
  MsgBox RegEx.test(s)
  Set RegEx = Nothing
  End Sub
  如果匹配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中的字符是否不在 a b c中,
  preg_match("/[^(abc)]/s", $str, $arr);
  其中字符 2 就不在 a b c 中,所以$arr返回值为2;
  同时匹配,包含字符串 "abc",而且不包含字符串 "xyz"
  "/(abc)[^((?!xyz).)*$]/s"
  详细出处参考:http://www.jb51.net/article/19910.htm
  44444444444444444444
  (?!((\w)*java(\w)*)
  这个是不匹配的
  555555555555555555555555
  String regex = "(?:(?!party).)*";
  欢迎转载,但请保留出处,本文章转自[华软网] 原文链接:http://www.huarw.com/program/java/JAVA02/200806/16 02138_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[^]*?>).*?>
  例子:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值