我现在遇到这个问题好几次了,就是找不到解决方案。
基于这个帖子,我试图达到与他相反的效果。与其只匹配AA...AA
和BB...BB
,我只想在第二组相反的情况下进行匹配,也许你可以说像if/else条件一样。
如果AA
搜索BB
elifBB
搜索AA
else no match。
AA...AA #no match
AA...BB #match
AA...CC #no match
BB...AA #match
在我过去的情况下,我知道会有两种模式(AA或BB(,但不知道它的顺序;匹配模式AA或BB,然后是我不在乎的任何东西,然后是与之前匹配的完全相反的东西,没有其他东西";。
我在SO上读了几篇文章和python的文档,backreference对我来说很清楚。我也更接近negative lookahead assertion
,但这里的问题是,它只是定义了它必须与以前的匹配不同,所以如果我捕获的组是(AA|BB)
,并且它与AA
匹配,那么(?!\1(将与AA
之外的任何其他组匹配。
我希望我能弄清楚我被困的地方,我会感谢任何帮助。
似乎可以使用:
^(AA|BB).*(?!1)(AA|BB)$
查看在线演示
^
——起始线锚(AA|BB)
-匹配"AA">或"BB"的第一个捕获组.*
-匹配换行符以外的任何0+(贪婪(字符(?!1)
-断言位置的否定前瞻后面没有来自第一个捕获组的捕获文本(反向引用((AA|BB)
-第二个捕获组,匹配"AA">或"BB">$
——终点线锚