提取一个单词冒号空间几个单词

时间:2018-10-22 23:09:48

标签: r regex tidyverse stringr

我需要从文本字段中提取两个模式,一个是“ From:alpha beta”,另一个是“ To:gemma delta”。

df <- tibble(text=c("From: alpha beta", "To: gemma delta"))

我正在使用它。

from_pattern <- regex("[From]:\\s[alpha beta]")
to_pattern <- regex("[To]:\\s[gemma delta]")

df <- df%>% 
  mutate(to = if_else(str_detect(text, to_pattern), "to", NA_character_),
         from = if_else(str_detect(text, from_pattern), "from", NA_character_))

但是我没有得到想要的结果。我在这里想念什么?如果将输出显示在以下一列中,那就太好了:

df <-tibble(text = c(“ From:alpha beta”,“ To:gemma delta”),              tofrom = c(“ from”,“ to”))

1 个答案:

答案 0 :(得分:1)

假设您想知道字符串是以"scripts": { "myscript": "a", "postmyscript": "b" } 还是From:开头:

To:

在这里使用df %>% mutate(tofrom = tolower(str_extract(text, '(?i)^(from|to)(?=: .*)'))) # A tibble: 2 x 2 # text tofrom # <chr> <chr> #1 From: gemma delta from #2 To: alpha beta to 修饰符忽略大小写以使匹配更加通用,然后从字符串的开头(?i)开始匹配单词fromto

如果您需要完全匹配模式:

: