Мы можем использовать regmatches/gregexpr
для сопоставления одной или нескольких цифр (\\d+
), за которыми следует пробел, «разряженный» для извлечения количества разрядов
as.integer(regmatches(str, gregexpr("\\d+(?= discharged)", str, perl = TRUE))[[1]])
#[1] 1 2
Если указано c только в «Англия», начните с «Англия», за которым следуют символы tat, не являющиеся (
([^(]+
) и (
, затем запишите цифры (\\d+
) как группу, в замене укажите обратная ссылка (\\1
) захваченной группы
sub("England[^(]+\\((\\d+).*", "\\1", str)
#[1] "1"
Или, если мы go опцией OP, (
следует экранировать, поскольку это метасимвол для захвата группы (после cases
). Кроме того, \\d+
можно поместить за квадратные скобки
sub("(?i)England has \\d+ cases\\((\\d+).*", "\\1", str)
#[1] "1"