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

正则表达式的引擎是贪婪,只要模式允许,它将匹配尽可能多的字符。

如何匹配满足条件的最短字符?通过在“重复描述字符”(如*,如+)后面添加“?”,可以将匹配模式改成非贪婪。

 

示例:

在以下的字符串中,我希望能够匹配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>”。

你可能感兴趣的:(正则表达式,String,C#,Class,regex,引擎)