匹配随机内容前面的可选模式

时间:2013-04-02 04:28:15

标签: c# .net regex

我需要在下面的句子中捕获两个组,一个是,另一个是可选

I want to match random optional field.

我尝试了以下方法,但它没有产生预期的结果:

(I).*?(optional)?

删除围绕可选的圆形专利可以正确匹配,但由于我需要第二场比赛,我不能这样做。

(I).*?optional?

那么如何才能正确匹配两个组?谢谢!

2 个答案:

答案 0 :(得分:2)

你的正则表达式的诀窍在于你需要对optional之前与optional不匹配的任何内容进行分组(并丢弃)。

使用否定环视(前缀为?:,以便该组不用于捕获):

(I)(?:(?!optional).)*(optional)?.*

答案 1 :(得分:0)

您可以尝试以下正则表达式:

(I).*(optional)

这对括号将返回捕获组。