检测包含和排除特定单词的字符串(使用stringr软件包)
我是新手,找不到我问题的答案。我在字符串变量中有字符串观察值,并尝试检测MS、MA或Master,但不包括MBA:检测包含和排除特定单词的字符串(使用stringr软件包),r,regex,string,R,Regex,String,我是新手,找不到我问题的答案。我在字符串变量中有字符串观察值,并尝试检测MS、MA或Master,但不包括MBA: input <- c("Master of Business Administration (MBA) program", "MS, MA, Master", "Master") 编辑:这对我现在起作用了: str_detect(input, "\\bMS\\b|\\bMaster\\b|\\bMA\\b") & !str_detect(input,"\\bMBA\
input <- c("Master of Business Administration (MBA) program", "MS, MA, Master", "Master")
编辑:这对我现在起作用了:
str_detect(input, "\\bMS\\b|\\bMaster\\b|\\bMA\\b") & !str_detect(input,"\\bMBA\\b")
您可以组合逻辑条件:
library(stringr)
input <- c("Master of Business Administration (MBA) program", "MS, MA, Master", "Master")
(str_detect(input, "Master") & !str_detect(input, "MBA"))
# [1] FALSE TRUE TRUE
库(stringr)
输入您可以组合逻辑条件:
library(stringr)
input <- c("Master of Business Administration (MBA) program", "MS, MA, Master", "Master")
(str_detect(input, "Master") & !str_detect(input, "MBA"))
# [1] FALSE TRUE TRUE
库(stringr)
输入您可以使用单个PCRE模式(您需要使用grepl
和perl=TRUE
):
看。请注意,您可以将相同的模式用于str\u detect
:
> str_detect(input, '^(?!.*\\bMBA\\b).*\\b(?:Master|MA)\\b')
[1] FALSE TRUE TRUE
详细信息
^
-字符串的开头
(?!.\\bMBA\\b)
-如果在字符串开头的任何0+字符(除换行字符外)后有一个整字MBA
,则会导致匹配失败(在模式开头添加(?s)
,以启用多行输入)
*
-除换行符以外的任何0+字符,尽可能多
\\b(?:Master | MA)\\b
-整个单词Master
或MA
您可以使用单个PCRE模式(您需要将grepl
与perl=TRUE
一起使用):
看。请注意,您可以将相同的模式用于str\u detect
:
> str_detect(input, '^(?!.*\\bMBA\\b).*\\b(?:Master|MA)\\b')
[1] FALSE TRUE TRUE
详细信息
^
-字符串的开头
(?!.\\bMBA\\b)
-如果在字符串开头的任何0+字符(除换行字符外)后有一个整字MBA
,则会导致匹配失败(在模式开头添加(?s)
,以启用多行输入)
*
-除换行符以外的任何0+字符,尽可能多
\\b(?:Master | MA)\\b
-整个单词Master
或MA
你能更具体地说明你想“检测”什么吗?您有一个长度为3的输入和一个长度为4的所需输出。此外,请将输入input
提供给str_detect()
函数,而不是c
。。。。例如,str_detect(input,“(?!*MBA)\\bMS\\b|\\b master\\b|\\bMA\\b”)
返回TRUE
道歉,为未来的求助者重新定义问题。再次感谢您的快速回答。请您更具体地说明您想“检测”什么?您有一个长度为3的输入和一个长度为4的所需输出。此外,请将输入input
提供给str_detect()
函数,而不是c
。。。。例如,str_detect(input,“(?!*MBA)\\bMS\\b|\\b master\\b|\\bMA\\b”)
返回TRUE
道歉,为未来的求助者重新定义问题。再次感谢您的快速回答