将正则表达式匹配存储到变量中

时间:2018-02-26 07:21:12

标签: r regex

如何使用正则表达式将匹配项存储到R?

中的变量中

例如我的字符串:

"1 win & 1 nomination." 
"1 win & 1 nominations."
"1 wins & 1 nomination."
"1 win"
"21 nominations."

我想存储获胜和提名的数量以供日后使用

样本的预期输出将是:

Wins  nominations
 1    1
 1    1
 1    1
 1    0
 0    21
我有正则表达式:

\d+\s+win.*\d+\s+nomination.*

2 个答案:

答案 0 :(得分:1)

您可以使用wins正则表达式提取\d+(?=\s+win)之前的数字,使用nominations使用\\d+(?=\\s+nomination)提取stringr::str_extract之前的数字:

library(stringr)
Wins <- str_extract(x, "\\d+(?=\\s+win)")
Wins[is.na(Wins)] <- 0
nominations <- str_extract(x, "\\d+(?=\\s+nomination)")
nominations[is.na(nominations)] <- 0
df <- data.frame(Wins, nominations)
df
  Wins nominations
1    1           1
2    1           1
3    1           1
4    1           0
5    0          21

如果数字和字词之间不能有空格,请使用\s*代替\s+

答案 1 :(得分:0)

参考你的正则表达式:

  

(\ d +)\ S +取胜。(\ d +)\ S +提名。

这可以帮助您捕获每行上的两个数字,

然后您可以使用以下方式打印它们:

  

\ 1 \吨\ 2

其中\ 1表示获胜次数, \ t是制表符, \ 2提名编号

相关问题