Word边界正则表达式问题

时间:2017-01-08 20:28:19

标签: r regex word-boundary

我在正则表达式中使用单词边界\b时出现问题。我使用R但是当我尝试http://regexr.com时问题也存在。我使用的模式是\bs\.l\.\b,虽然我希望下面的第1行和第3行与此模式匹配,但只有第2行匹配:

aaa s.l. bbb
aaa s.l.bbb
aaa s.l., bbb

同样请参阅http://regexr.com/3f154

2 个答案:

答案 0 :(得分:5)

word boundaries匹配以下位置:

  
      
  • 在字符串中的第一个字符之前,如果第一个字符是单词字符。
  •   
  • 在字符串中的最后一个字符之后,如果最后一个字符是单词字符。
  •   
  • 字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。
  •   

现在,您希望匹配前面带有单词边界的s.l.,而不是单词char。您需要使用\b外观替换尾随的(?!\w)

\bs\.l\.(?!\w)

请参阅regex demo

如果您正在使用基本R函数,请使用perl=TRUE,它将在使用ICU正则表达式库的字符串函数中工作。

答案 1 :(得分:2)

.不是单词字符,因此.字符与空格或逗号之间没有单词边界。