IT技术学习网
IT技术学习网
您的位置: 主页 > 编程技术 > c# >

正则表达式不匹配两个或多个字符串

2014-12-07 10:25 来源: IT技术学习网原创 阅读:

本文讲述c# 正则表达式如何实现:不匹配两个以上、多个字符串的方法

今天碰到一个正则表达式需求,需要不匹配几个字符串,比如要排除http和ftp这两个字符串开头的字符串。

首先想到的是[^abc]这个不匹配方法,但这种只能不匹配单个字符,即使括号括起来也是单个字符匹配,无法实现排除字符串的功能

事实上,用! Regex.IsMatch("abcde", @"(http|ftp)") 可以实现功能,但这种方法的非是在正则外用! 实现的,没有广泛实用性

最后用如下正则表达式实现功能:

"^(?!(http|ftp))"

其中(?代表反向预测先行搜索的意思。(http|ftp)大家都懂的。

(?!pattern) 
执行反向预测先行搜索的子表达式,该表达式匹配不处于匹配 pattern 的字符串的起始点的搜索字符串。它是一个非捕获匹配,即不能捕获供以后使用的匹配。例如,“Windows (?!95| 98| NT| 2000)”与“Windows 3.1”中的“Windows”匹配,但不与“Windows 2000”中的“Windows”匹配。预测先行不占用字符,即发生匹配后,下一匹配的搜索紧随上一匹配之后,而不是在组成预测先行的字符后。

如果读懂了上面的 (?!pattern)的意思,我想,不匹配两个以上字符串的问题,您也就明白了。

正则表达式不匹配两个或多个字符串
转载需注明出处:IT技术学习网 http://www.itjsxx.com/csharp/regex_no_match.html

评论文章 正则表达式不匹配两个或多个字符串
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
IT技术学习网 - 关于我们 - 联系我们 - 版权声明 - 网站地图