r - 检测包含和排除特定单词的字符串(使用 stringr 包)
问题描述
新手在这里,找不到我的问题的答案。我的字符串变量中有字符串观察结果,并尝试检测 MS OR MA OR Master 但排除 MBA:
input <- c("Master of Business Administration (MBA) program", "MS, MA, Master", "Master")
所需的输出str_detect
:
False, True, True
编辑:这对我有用:
str_detect(input, "\\bMS\\b|\\bMaster\\b|\\bMA\\b") & !str_detect(input,"\\bMBA\\b")
解决方案
您可以使用单个 PCRE 模式(您需要使用grepl
with perl=TRUE
):
> grepl('^(?!.*\\bMBA\\b).*\\b(?:Master|MA)\\b', input, perl=TRUE)
[1] FALSE TRUE TRUE
请参阅正则表达式演示。请注意,您可以使用相同的模式str_detect
:
> str_detect(input, '^(?!.*\\bMBA\\b).*\\b(?:Master|MA)\\b')
[1] FALSE TRUE TRUE
细节
^
- 字符串的开始(?!.*\\bMBA\\b)
MBA
- 如果在字符串开头的换行符以外的任何 0+ 字符之后有一个完整的单词,则匹配失败的负前瞻((?s)
在模式开始时添加以启用多行输入).*
- 除换行符以外的任何 0+ 个字符,尽可能多\\b(?:Master|MA)\\b
- 一个完整的词Master
或MA
。
推荐阅读
- vba - 通过单个工作簿运行文件夹中的所有文件
- excel - 使用VBA在html页面中查找表号
- elasticsearch - 如何使用 elasticsearch ruby 在附件管道中使用文档?
- node.js - 卡在 heroku 试图部署 express 和 react
- php - PDO 留下 .laccdb 文件
- three.js - 对缓冲区几何进行射线投射时如何获得相交面
- vba - 如何正确使用 VBA 脚本插入具有特定字符的公式
- angular - Angular 5 - Angular Material 在组件中不起作用
- hive - sqoop 导入配置单元表错误
- python - ORM 排序与模型“元”排序 - Django 1.11