在线等!正则表达式匹配的问题
比如我有一个这样的字符串:
<
字符串1
>
字符串2
>
我写的正则总是匹配
<
字符串1
>
字符串2
>
我只需要取
<
字符串1
>
不要他那么贪恋。。
------解决方案--------------------采用非贪婪模式
<[^> ]*?>
------解决方案--------------------在使用修饰匹配次数的特殊符号时,有几种表示方法可以使同一个表达式能够匹配不同的次数,比如: "{m,n} ", "{m,} ", "? ", "* ", "+ ",具体匹配的次数随被匹配的字符串而定。这种重复匹配不定次数的表达式在匹配过程中,总是尽可能多的匹配。这种匹配原则就叫作 "贪婪 " 模式。
在修饰匹配次数的特殊符号后再加上一个 "? " 号,则可以使匹配次数不定的表达式尽可能少的匹配,使可匹配可不匹配的表达式,尽可能的 "不匹配 "。这种匹配原则叫作 "非贪婪 " 模式,也叫作 "勉强 " 模式。
楼主可以查阅一下正则的文章,理解一下贪婪与非贪婪模式
------解决方案--------------------另外注意“ <”和“> ”作为普通文本,是要完全匹配的,而在这两个普通字符中间的正则表达式,如果你使用 <[\s\S]*> 或是 <.*> 加个RegexOptions .Singleline参数,就会出现你所说的情况,为避免出现这种情况,中间的正则应尽量缩小匹配范围,[^> ]*这样即使为贪婪模式,也不会匹配另外的“> ”了,这样也会提高正则表达式的匹配效率