我正在尝试使用正则表达式(.NET)解析字符串,并找到所有以[[
开头并以]]
结尾的自定义标记。我的第一次尝试是使用\[\[(.*)\]\]
。当字符串中只有一个标记时,这似乎有效。但如果有多个,则只返回从第一个[[
到最后]]
的一个结果。
我的想法是从匹配的字符中排除]]
,但我还没有找到一种方法来实现这一点。我尝试过使用排除集(?! \]\])
并使用不同的语法,但找不到任何实际可行的内容。
任何人都知道一种简单的方法吗?
答案 0 :(得分:2)
默认情况下,正则表达式是贪婪的,即它们消耗尽可能多的字符。为了避免这种情况,请设置“?”在“。*”之后,即尝试\[\[(.*?)\]\]
。
答案 1 :(得分:0)
它比这更简单,尝试使用.*?
(最后一个?意味着它是一个不合适的匹配,这意味着它会在捕获信息时抓住最低限度)。
供参考,请查看this site on regex。它将为您提供有关贪婪与不同意的更多详细信息。
答案 2 :(得分:0)
。*是一个“贪婪”的匹配,并转到括号的最后一个匹配。
*?指定第一个匹配消耗尽可能少的重复(相当于lazy *)