r语言 - 字边界正则表达式问题



我在正则表达式中使用单词边界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。

单词边界在以下位置匹配:

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

现在,您希望匹配前面有单词边界而不是后跟单词字符s.l.。您需要将尾随b替换为(?!w)查看:

bs.l.(?!w)

查看正则表达式演示

如果您使用的是基本 R 函数,请使用 perl=TRUE,它将在由 ICU 正则表达式库提供支持的字符串函数中按原样工作。

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

最新更新