R 从字符串中提取引号中的单词

R 从字符串中提取引号中的单词,r,regex,R,Regex,我使用R从短文本片段中提取单词。具体地说,我想从字符串中提取任何出现在引号(“)中的单词,而不是出现在括号()中的单词 例如,我想要3个字符串中的第一个,而不是另外两个: c('"hello" world', 'hello world', '("hello") world') 原始代码尝试 str_extract(x, '(?<=")[^$]+(?<=")') str_extract(x,”(?我们可以使用regex l

我使用R从短文本片段中提取单词。具体地说,我想从字符串中提取任何出现在引号(“)中的单词,而不是出现在括号()中的单词

例如,我想要3个字符串中的第一个,而不是另外两个:

c('"hello" world', 'hello world', '("hello") world')
原始代码尝试

str_extract(x, '(?<=")[^$]+(?<=")')

str_extract(x,”(?我们可以使用regex lookaround

library(stringr)
ifelse(grepl('\\("', str1), NA,  str_extract(str1, '(?<=")\\w+'))
#[1] "hello" NA      NA    
库(stringr)

ifelse(grepl('\\(“,str1))、NA、stru extract(str1,,(?我们可以使用regex lookaround

library(stringr)
ifelse(grepl('\\("', str1), NA,  str_extract(str1, '(?<=")\\w+'))
#[1] "hello" NA      NA    
库(stringr)

如果ELSE(grepl(“\\(”,str1)、NA、str\u extract(str1,”(?您可以在
str\u extract
中使用此正则表达式和嵌套的环视:

(?:断言我们之前有一个
,但没有
  • [^”]+
    :匹配任何非
  • (?=(?!\)”)
    :断言我们在
    之后有一个
    ”,但在
    之后没有
  • 代码:


    str_extract(x,”(?您可以在
    str_extract
    中将此正则表达式与嵌套的环视一起使用:

    (?:断言我们之前有一个
    ,但没有
  • [^”]+
    :匹配任何非
  • (?=(?!\)”)
    :断言我们在
    之后有一个
    ”,但在
    之后没有
  • 代码:


    str_extract(x),(?适用于前两种情况,但不适用于第三种情况
    (“hello”)world
    适用于前两种情况,但不适用于第三种情况
    (“hello”)world
    如下:
    str_extract(x),(?您将需要对其进行双斜杠。
    str_extract(x),(?简单环顾四周就够了吗?
    cat(stru extract)(x,'(?但是这将匹配
    “hello”
    而不是
    hello
    以下内容:
    str_extract(x),(?您需要将其双斜杠。
    str_extract(x),(?简单的环顾一下就够了吗?
    cat(str_extract(x),)但是这将匹配
    “hello”“
    而不是
    你好
    最后,我用你的代码来解决它。最后,我用你的代码来解决它