首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用str_detect()检测与R中包含空格和标点符号的精确匹配

用str_detect()检测与R中包含空格和标点符号的精确匹配
EN

Stack Overflow用户
提问于 2021-10-13 16:56:48
回答 1查看 553关注 0票数 0

Detecting exact matches using str_detect() in R无法为我提供清晰的解决方案。

如果我有

代码语言:javascript
复制
test <- c("HR", "p-value (stratified)", "HRf", "HR-fake", "p-value", "p-value (unstratified)")
want <- c(TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE)

最好的方法就是

代码语言:javascript
复制
> test == "HR" | test == "p-value (stratified)"
[1]  TRUE  TRUE FALSE FALSE FALSE FALSE

但是,为了学习,我希望在regex中这样做。然而,这些都不适合我。

代码语言:javascript
复制
> str_detect(testvec, "HR|p-value (stratified)")
[1]  TRUE FALSE  TRUE  TRUE FALSE FALSE
> str_detect(testvec, "\\bHR\\b|\\bp-value (stratified)\\b")
[1]  TRUE FALSE FALSE  TRUE FALSE FALSE

问题似乎是str_detect()是

  1. 检测“HR-假”甚至"\bHR\b“

str_detect("HRf","\\bHR\\b") 1 FALSE

str_detect("HR-fake","\\bHR\\b") 1

str_detect("HR - fake","\\bHR\\b") 1

即使使用“p值(分层)”,

  1. 也没有检测到“p值(分层)”。

str_detect("p-value (stratified)","p-value (stratified)") 1 FALSE

是什么引起了这个问题?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-13 17:07:42

除了注释,我们需要指定开始(^)和结束($),否则它可以匹配HR-fake,尽管我们可以阻止HRf与word边界(\\b)的匹配。

代码语言:javascript
复制
 str_detect(test, regex("^(HR|p-value \\(stratified\\))$"))
[1]  TRUE  TRUE FALSE FALSE FALSE FALSE
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69559443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档