Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测包含和排除特定单词的字符串(使用stringr软件包)_R_Regex_String - Fatal编程技术网

检测包含和排除特定单词的字符串(使用stringr软件包)

检测包含和排除特定单词的字符串(使用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\

我是新手,找不到我问题的答案。我在字符串变量中有字符串观察值,并尝试检测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\\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
道歉,为未来的求助者重新定义问题。再次感谢您的快速回答