У меня есть два вопроса регулярного выражения:
Часть 1: У меня есть вектор символов с такими строками:
raw_strings <- c("hello world (abc)", "no hi world (abc(d))")
И я хочу извлечь содержимое внутри первого набора скобок, например:
clean_strings <- c("abc", "abc(d)")
До сих пор я использовал это:
str_extract(raw_strings, "(?<=\\().+?(?=\\))")
Однако это приводит к следующему:
"abc" "abc(d"
Как я могу изменить выражение, чтобы сохранить последнюю скобку?
Часть 2: У меня есть несколько строк, которые выглядят так:
b_strings <- c("5.2 ko – word (longer word)", "5.9 ko - two words (long)")
Я хотел бы иметь это:
b_strings_clean <- c("word", "two words")
До сих пор я сделал это:
str_extract(ac_meta, "\\s[^-–]*$")
Что приводит к:
"word (longer word)" "two words (long)"
Как я могу удалить все после скобки (включая скобку)?
Спасибо.
Работает ли это с помощью осмотра:
str_extract(raw_strings, '(?<=\\().*(?=\\))')
[1] "abc" "abc(d)"
str_extract(b_strings, '(?<=[–-]\\s).*(?=\\s\\()')
[1] "word" "two words"