R正则表达式匹配整个单词,考虑标点符号
我在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'而不是'\使用 重点是单词和非单词字符之间的单词边界匹配,这就是为什么在眼对眼中进行匹配的原因。您只想在
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)]