正则表达式匹配不包括一个字符串或者几个字符串
正则表达式怎样匹配一个字符串,条件是不包括一个子串或者多个子串?搜寻网上答案,众说纷纭,七七八八,有的十分怪异,有的不好使。其实,这个表达式很简单,就是不要使用"^"这个控制符,而使用"?!"。这个控制串在网上查不到解释,不知道具体功能。不过,它可以用来匹配不包括的字符串。
正则表达式最常见的一个功能就是html分析,利用它搜寻tag。比如要<table class="abc" ....... >。那么可以这样,控制串前部为<table\bclass="abc,那么后面呢?后面应该是任意字符,包括空格,换行等字符。因为正则是贪婪的,一旦指定任意字符,那它就会跳过>,一直到文本末尾。所以,我们必须阻止它,让它在>停下来。怎么停下来?就是任意字符,但不能包括>。好,后面续上,完整的是<table\bclass="abc”((?!>).)*>。看见里面的“."了吧,意思是所有字符,本来它不包括换行符,在C#下,你可以通过调用函数忽略掉换行符。但是这个".",不是无条件的,而是有限制的,就是不能包括>。这下子就好了,匹配过程会在第一个>字符那里停下来,因为马上下一个匹配符就是>,所以整个匹配就结束了,最后一个字符是>。至此,整个tag被匹配出来。
本文出了说明如何使用不包括子串的匹配,而且要说明的是,?!这个控制符控制的是字符串,而非字符,这是与^的不同之处,也是有实用价值的地方。仅仅不包括一个字符,有多大用处?还有就是,你可以连续使用这正则匹配指定中文汉字
个控制符,用于不包括多个字符串。  比如对于文本ab2cd3ef 1234  xyz,a((?!d).)*将得到ab2c,a((?!23).)*将得到ab2cd3ef 1,a((?!23)(?!c).)*将得到ab2,就是说不包括多个字符串匹配时,停止于第一个不包括的字符串处。不包括多个字符串用于分析html时,可以将某些具有关键字符串的tag区分出来,因为不包括>是必须的。比如你可以把所有<table出来,形成一个数组或表,然后把不不包括关键字的元素剔除,不就剩下有关键字的元素了吗?

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。