R正则表达式匹配整个单词,考虑标点符号

R正则表达式匹配整个单词,考虑标点符号,r,regex,string-matching,R,Regex,String Matching,我在R。我想在文本中匹配整个单词,并考虑标点符号。 例如: 我想在text2中匹配eye,但在text1中不匹配 即命令: to_match[sapply(paste0('\\<',to_match,'\\>'),grepl,text1)] 匹配[sapply(paste0('\\')、grepl、text1] 应返回字符(0)。但是现在,它返回eye 我还尝试了使用'\\b'而不是'\使用 重点是单词和非单词字符之间的单词边界匹配,这就是为什么在眼对眼中进行匹配的原因。您只想在

我在R。我想在文本中匹配整个单词,并考虑标点符号。 例如:

我想在
text2
中匹配
eye
,但在
text1
中不匹配

即命令:

to_match[sapply(paste0('\\<',to_match,'\\>'),grepl,text1)]
匹配[sapply(paste0('\\')、grepl、text1]
应返回
字符(0)
。但是现在,它返回
eye

我还尝试了使用
'\\b'
而不是
'\使用

重点是单词和非单词字符之间的单词边界匹配,这就是为什么在
眼对眼
中进行匹配的原因。您只想在字符串的开头或结尾和空格之间进行匹配

在TRE正则表达式中,最好使用组,因为此正则表达式库不支持lookarounds,您只需测试字符串的单个模式匹配,即可返回true或false


(?:\s | ^)
非捕获组匹配任何空格或字符串开头,
(?:\s |$)
匹配空格或字符串结尾。

使用
匹配[sapply(粘贴0(“(?:^ | \\s)”,匹配“(?:\\s |$”),grepl,text1)]
非常感谢,它可以工作!如果你把你的评论变成了一个答案(也许有一些关于正则表达式的解释),我很乐意接受。
to_match[sapply(paste0('\\<',to_match,'\\>'),grepl,text1)]
to_match[sapply(paste0('(?:\\s|^)',to_match,'(?:\\s|$)'),grepl,text1)]