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

3

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

I want to match random optional field.

我尝试了下面的方法,但没有得到预期的结果:
(I).*?(optional)?

去掉可选项周围的圆括号可以正确匹配,但由于我需要第二个匹配,所以不能这样做。

(I).*?optional?

那么我该如何正确匹配这两组?谢谢!
2个回答

2
你的正则表达式的技巧在于需要分组(并且丢弃)任何与“optional”不匹配的内容。使用负向前瞻(添加一个“?:”以使该组不用于捕获):
(I)(?:(?!optional).)*(optional)?.*

0
你可以尝试以下正则表达式:
(I).*(optional)

一对括号将返回捕获组。


1
您提供的正则表达式使“optional”变为非可选项。 - Kevin Richardson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接