r - 匹配“foo”的实例,后面没有“bar”
问题描述
如何匹配具有“foo”后跟“bar”以外的其他内容的字符串(在 foo 的末尾有一个单词边界)?
例子
library(stringr)
str_detect("foo 123", "\\bfoo\\b^(bar)") # should be TRUE
str_detect("foo", "\\bfoo\\b^(bar)") # should be TRUE
str_detect("foo bar", "\\bfoo\\b^(bar)") # should be FALSE
显然,我尝试过的\\bfoo\\b^(bar)
方法是不正确的。
解决方案
使用负前瞻,您可以使用以下内容:
\bfoo\b(?!\W+bar)
显然,如果\
在 R 中是非法的,你需要逃避它,所以你会使用它\\bfoo\\b(?!\\W+bar)
。
如果bar
还必须是一个完整的单词,您可以\b
在末尾添加一个额外的:
\bfoo\b(?!\W+bar\b)
推荐阅读
- amazon-web-services - 将 AWS SSL 添加到外部 DNS
- java - 如何在 Java 中使用正则表达式从字符串中提取子字符串?
- ios - 当应用程序从后台转到前台时,为什么 SRWebSocket 会导致应用程序崩溃?
- scala - 如何在Scala中返回值或抛出错误
- jenkins-pipeline - Jenkins管道在条件下验证多文件是否存在
- php - if 语句确定 $_SESSION 数据
- php - 对应于您的 MariaDB 服务器版本,以便在第 1 行的 '3g,charging=999,diagnostic=299 ,screen=2190 ,water=299 ,camera' 附近使用正确的语法
- eclipse - 解决方案 :: 使用 Draw2d Eclipse RCP 设置上下文菜单的最简单方法
- reactjs - Redux-Form 的初始值仅在硬编码时呈现,而不是来自 props/state
- qt - qcleanlooksstyle 在Qt中属于哪个QT +=