假设我有一个字符串:
str <- "England has 90 cases(1 discharged, 5 died); Scotland has 5 cases(2 discharged, 1 died)"
在英格兰,我该如何抢救出院病例?
我试过了
sub("(?i).*England has [\\d] cases(.*?(\\d+).*", "\\1", str),
它返回原始字符串。非常感谢!
我们可以使用regmatches/gregexpr
匹配一个或多个数字(\\d+
)后跟一个空格,“排出”来提取排出的数量
as.integer(regmatches(str, gregexpr("\\d+(?= discharged)", str, perl = TRUE))[[1]])
#[1] 1 2
如果仅针对“英格兰”,则以“英格兰”开头,其后的字符不是(
([^(]+
)和(
,然后将数字(\\d+
)捕获为一个组,在替换中指定\\1
捕获组的后向引用()
sub("England[^(]+\\((\\d+).*", "\\1", str)
#[1] "1"
或者,如果我们采用OP的选项,(
则应将进行转义,因为它是捕获组的元字符(在之后cases
)。另外,\\d+
可以放在方括号之外
sub("(?i)England has \\d+ cases\\((\\d+).*", "\\1", str)
#[1] "1"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句