У меня есть входной вектор следующим образом:
input <- c("fdsfs iwantthis (1,1,1,1) fdsaaa iwantthisaswell (2,3,4,5)", "fdsfs thistoo (1,1,1,1)")
И я хотел бы использовать регулярное выражение для извлечения следующего:
> output
[1] "iwantthis iwantthisaswell" "thistoo"
Мне удалось извлечь каждое слово перед открывающей скобкой.
Я попробовал это, чтобы получить только первое слово:
> gsub(".*?[[:space:]](.*?)[[:space:]]\\(.*", "\\1", input)
[1] "iwantthis" "thistoo"
Но я не могу заставить его работать несколько раз:
> gsub(".*?[[:space:]](.*?)[[:space:]]\\(.*?[[:space:]](.*?)[[:space:]]\\(.*", "\\1 \\2", input)
[1] "iwantthis iwantthisaswell" "fdsfs thistoo (1,1,1,1)"
Самое близкое, что мне удалось, это следующее:
library(stringr)
> str_extract_all(input, "(\\S*)\\s\\(")
[[1]]
[1] "iwantthis (" "iwantthisaswell ("
[[2]]
[1] "thistoo ("
Я уверен, что что-то упустил в своем регулярном выражении (не настолько хорошо), но что?