【问题标题】:R grepl: whole word matching not working for punctuation marksR grepl:整个单词匹配不适用于标点符号
【发布时间】:2018-02-19 11:21:38
【问题描述】:

text = 'this is ; an example'

语言是 R。我想知道为什么:

grepl("\\<is\\>",text)

返回TRUE

同时

grepl("\\<;\\>",text)

返回FALSE

请注意,将perl 参数设置为TRUEFALSE 没有任何区别。我知道grepl(";",text) 有效,我的问题是为什么当我们添加单词边界时它不再有效了。

【问题讨论】:

标签: r regex grepl


【解决方案1】:

\< 是前导词边界,\> 是尾随词边界。所以\<之后的char必须是word char,\>之前的char应该是word char。

; 不是单词字符。 \<;\> 永远不会匹配任何字符串,因为 \<; 表示 匹配前面有前导词边界的 ; 并且 ;\> 表示 匹配 ; 即后跟一个结尾的单词边界,即要求; 是一个单词字符,这是错误的。

【讨论】:

  • 谢谢,很高兴知道这一点。所有标点符号都不是单词字符吗?
  • 所有标点符号都不是单词字符,100% 正确。注意单词字符是:字母、数字和_"\\<Abc\\>" won't match Abc in _Abc_
猜你喜欢
  • 2020-02-03
  • 2014-03-24
  • 2011-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多