我需要从文本字段中提取两个模式,一个是“ 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”))
答案 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)
开始匹配单词from
或to
如果您需要完全匹配模式:
: