Regex组带有管道(2个有效模式),对该组进行负反向引用,然后现在选择另一个



我现在遇到这个问题好几次了,就是找不到解决方案。

基于这个帖子,我试图达到与他相反的效果。与其只匹配AA...AABB...BB,我只想在第二组相反的情况下进行匹配,也许你可以说像if/else条件一样。

如果AA搜索BBelifBB搜索AAelse 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">
  • $——终点线锚

相关内容

最新更新