我需要捕获以下句子中的两个组,一个是 I,另一个是 可选的 I want to match random optional field. 我尝试了下面的方法,但没有得到预期的结果:(I).*?(optional)? 去掉可选项周围的圆括号可以正确匹配,但由于我需要第二个匹配,所以不能这样做。 (I).*?optional? 那么我该如何正确匹配这两组?谢谢!
你的正则表达式的技巧在于需要分组(并且丢弃)任何与“optional”不匹配的内容。使用负向前瞻(添加一个“?:”以使该组不用于捕获):(I)(?:(?!optional).)*(optional)?.*