正则表达式:单词之间的单词

时间:2014-02-15 17:59:55

标签: regex

考虑这个示例文本:

!important!this is a poor example of a sentence!important!

我尝试匹配a之后和!important!之间的每个字词。

到目前为止,我已经(?<=!important!.*\ba\s)(\w+),它给出了正确的结果,但没有考虑到最后一部分。我已经尝试过预测但是没有用。我对正则表达式很不好,所以对此表示赞赏。

编辑:我希望得到poorsentence作为结果

2 个答案:

答案 0 :(得分:0)

如果您想获得poorsentence,则应将.*添加到正向前瞻,以便只要!important!在前方(任何地方和不只是紧接着前方):

(?<=!important!.*\ba\s)(\w+)(?=.*!important!)

此外,您可以删除捕获组,然后使用.Groups[0]来获得匹配:

(?<=!important!.*\ba\s)\w+(?=.*!important!)

ideone demo

答案 1 :(得分:0)

只是一个猜测,看起来你正在使用一个可变长度的lookbehind断言 一般来说,我不会用这个。如果需要,请从代码中删除它。

 #  (?s)(?<=!important!(?:(?!\ba\s).)*\ba\s)((?:(?!!important!).)*)(?=!important!)

 (?s)                          # Dot all
 (?<=                          # Variable length look behind assertion (should not be used really)
      !important! 
      (?:
           (?! \b a \s )
           . 
      )*
      \b a \s 
 )

 (                             # (1 start)
      (?:
           (?! !important! )
           . 
      )*
 )                             # (1 end)
 (?= !important! )             # Look behind assertion (should not be used really)