考虑这个示例文本:
!important!this is a poor example of a sentence!important!
我尝试匹配a
之后和!important!
之间的每个字词。
到目前为止,我已经(?<=!important!.*\ba\s)(\w+)
,它给出了正确的结果,但没有考虑到最后一部分。我已经尝试过预测但是没有用。我对正则表达式很不好,所以对此表示赞赏。
编辑:我希望得到poor
和sentence
作为结果
答案 0 :(得分:0)
如果您想获得poor
和sentence
,则应将.*
添加到正向前瞻,以便只要!important!
在前方(任何地方和不只是紧接着前方):
(?<=!important!.*\ba\s)(\w+)(?=.*!important!)
此外,您可以删除捕获组,然后使用.Groups[0]
来获得匹配:
(?<=!important!.*\ba\s)\w+(?=.*!important!)
答案 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)