正则表达式可选组无法进行全搜索

时间:2011-08-28 10:54:16

标签: .net regex quantifiers

我遇到了一些我无法工作的明显事物:

有一个文字,如:“.... blah-blah-blah... Grupper blah-blah-blah Butik ...”。 Grupper是一个可选标记 - 可以在文本中省略,而Butik是必需的。因此,如果有Grupper且始终为Butik,则应匹配(Grupper)?[\s\S]*?(Butik)

Grupper这样的表达式从未捕获{{1}},但没有?工作正常(当然,当原始文本中没有'Grupper'时,完全失败)。

如何让它发挥作用?

1 个答案:

答案 0 :(得分:0)

(Grupper)?匹配Grupper,如果它出现 0或1 次。所以它匹配的东西,即使Grupper不是它的一部分。

如果您的字符串以Grupper开头,则反向引用(Grupper)将包含它(默认情况下正则表达式是贪婪的),如果字符串不是以Grupper开头,则反向引用将为空。

在你的位置,我会用两种不同的正则表达式来捕捉Butik和Grupper。