我想知道是否有某种方式来证明分组是否产生了匹配。例如,让我们看看我想用以下 2 个字符串完成什么:
string 1: "start magic someword anotherword test end"
string 2: "start test x y z end"
我想获取具有关键字magic
和test
(两者)的字符串。但是有一些问题:
magic
并且test
可能彼此不连续。例如,start magic word1 test word2 end
magic
并且test
可能不在字符串中的那个顺序,即应该给 forstart magic test end
和 for匹配start test magic end
。
为了解决这个问题,我采用了以下正则表达式:
start ((w1)*(w2)*\[^(end)])+end
... 意思是:
- 字符串必须以单词开头并以
start
结尾end
。 - 匹配
w1
andw2
以任意顺序消费其他非end
感谢的词[^(end)]
。 - 之后,比赛结束。
该正则表达式的问题是所有字符串都匹配它,因为[^(end)]
我需要丢弃实际字符串之间w1
和中的单词。w2
将正则表达式与字符串 1 匹配,它将是:
start ((magic)*(test)*[^(end)])+end
...它应该只匹配字符串 1(这就是我想要的)。但字符串 2 也匹配。
是否有任何形式的检查分组是否已被正则表达式引擎匹配?遇到过类似(if \1 != null)
检查magic
和关键字的事情吗?test
我必须用正则表达式来做,因为我无法在源代码中处理它。它旨在与命令行调用的工具一起使用。