玩客云电脑版下载:正则表达式匹配不包括一个字符串或者几个字符串

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 12:40:44
正则表达式怎样匹配一个字符串,条件是不包括一个子串或者多个子串?搜寻网上答案,众说纷纭,七七八八,有的十分怪异,有的不好使。其实,这个表达式很简单,就是不要使用"^"这个控制符,而使用"?!"。这个控制串在网上查不到解释,不知道具体功能。不过,它可以用来匹配不包括的字符串。
正则表达式最常见的一个功能就是html分析,利用它搜寻tag。比如要找。那么可以这样,控制串前部为,一直到文本末尾。所以,我们必须阻止它,让它在>停下来。怎么停下来?就是任意字符,但不能包括>。好,后面续上,完整的是).)*>。看见里面的“."了吧,意思是所有字符,本来它不包括换行符,在C#下,你可以通过调用函数忽略掉换行符。但是这个".",不是无条件的,而是有限制的,就是不能包括>。这下子就好了,匹配过程会在第一个>字符那里停下来,因为马上下一个匹配符就是>,所以整个匹配就结束了,最后一个字符是>。至此,整个tag被匹配出来。
本文出了说明如何使用不包括子串的匹配,而且要说明的是,?!这个控制符控制的是字符串,而非字符,这是与^的不同之处,也是有实用价值的地方。仅仅不包括一个字符,有多大用处?还有就是,你可以连续使用这个控制符,用于不包括多个字符串。  比如对于文本ab2cd3ef 1234  xyz,a((?!d).)*将得到ab2c,a((?!23).)*将得到ab2cd3ef 1,a((?!23)(?!c).)*将得到ab2,就是说不包括多个字符串匹配时,停止于第一个不包括的字符串处。不包括多个字符串用于分析html时,可以将某些具有关键字符串的tag区分出来,因为不包括>是必须的。比如你可以把所有