首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >提取一个单词冒号空格几个单词

提取一个单词冒号空格几个单词
EN

Stack Overflow用户
提问于 2018-10-23 07:09:48
回答 1查看 69关注 0票数 0

我需要从文本字段中提取两种模式,一种是" from : alpha beta“,另一种是" to : beta”,来自以下数据帧。

代码语言:javascript
复制
df <- tibble(text=c("From: alpha beta", "To: gemma delta"))

我正在用这个..。

代码语言:javascript
复制
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“),tofrom = c("from","to"))

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-23 07:19:54

假设您想知道字符串是以From:开头还是以To:开头

代码语言:javascript
复制
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,后跟:

如果需要精确匹配模式:

代码语言:javascript
复制
df %>% mutate(tofrom = tolower(str_extract(text, '(?i)^(from(?=: gemma delta$)|to(?=: alpha beta$))')))
# A tibble: 2 x 2
#  text              tofrom
#  <chr>             <chr> 
#1 From: gemma delta from  
#2 To: alpha beta    to
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52938881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档