【发布时间】:2017-02-17 09:54:54
【问题描述】:
我正在尝试使用 R 中的包 stringi 从字符串中提取数字。字符串的模式是:
1 nomination
2 wins
1 win & 3 nominations
2 wins & 1 nomination
won 1 Oscar. Another 5 wins & 2 nominations
我希望提取每个字符串中的数字。如果只有 win 或 nomination,则将唯一的数字视为获胜/提名。
到目前为止,我已经尝试了以下方法:
test <- "6 wins & 3 nominations."
str_extract(test, regex="\\w*\\d\\w*")
但是,这只给出了第一个数字,不包括第二个数字。
stri_extract(test, regex="\\w*\\d+wins(\\s*+&+\\s*)(\\d)") 给出不适用。
以下方式可行,但感觉太笨拙,先拆分字符串,然后是 stri_extract:
t <- strsplit(test, "&") # split the string first
win_num <- stri_extract(t[1], regex="\\d")
nomination_num <- stri_extract(t[2], regex="\\d") # if exists
有什么方法可以让正则表达式在一行中工作?谢谢!
【问题讨论】: