您的位置:首页 > 编程语言 > C#

正则表达式中的贪婪匹配(C#)

2011-01-25 12:56 369 查看
正则表达式的引擎是贪婪,只要模式允许,它将匹配尽可能多的字符。
如何匹配满足条件的最短字符?通过在“重复描述字符”(如*,如+)后面添加“?”,可以将匹配模式改成非贪婪。

示例:
在以下的字符串中,我希望能够匹配html的标记符号<span class="ssens">和紧随其后的第一个</span>中的内容。
string textString="<span> <span class="ssens">an islander</span> is always living in an island </span>"

Regex regexString = new Regex("<span class=/"ssens/">.+</span>", RegexOptions.Multiline);

Regex regexStringNonGreedy = new Regex("<span class=/"ssens/">.+?</span>", RegexOptions.Multiline);

结果:
如果使用 regexString,匹配结果是“<span> <span class="ssens">an islander</span> is always living in an
island </span>”。
如果使用 regexStringNonGreedy,匹配结果是“<span> <span class="ssens">an islander</span>”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: