regex前缀中的可选部分,但如果存在则不包含在匹配项中

时间:2011-10-14 15:07:05

标签: regex

问题在代码中更容易被看到,然后描述了我跟随正则表达式

 (?<=First(Second)?)\w{5}

以及以下示例数据

  

FirstSecondText1
  FirstText2

我只想要匹配Text1&amp; Text2,我得到3,Secon已添加,我不希望这样。 四处玩,似乎无法让它发挥作用。

2 个答案:

答案 0 :(得分:4)

您需要额外的否定前瞻:

(?<=First(Second)?)(?!Second)\w{5}

如果您想避免两次使用Second,您可以在没有环视的情况下执行此操作并获取第一个捕获组的结果:

First(?:Second)?(\w{5})

答案 1 :(得分:1)

您可以尝试此正则表达式(?<=First(Second)?)\w{5}$。您所要做的就是在最后添加$,以使正则表达式与文本Secon不匹配。只要您确定输入文本末尾的模式,就可以使用它。在这种情况下,它是\w{5}$