#r #regex #string #tidyverse
#r #регулярное выражение #строка #аккуратная вселенная
Вопрос:
У меня есть два вопроса о регулярных выражениях:
Часть 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)"
Как я могу удалить все после круглой скобки (включая круглую скобку)?
Спасибо.
Ответ №1:
Работает ли это с использованием обходных путей:
str_extract(raw_strings, '(?<=\().*(?=\))')
[1] "abc" "abc(d)"
str_extract(b_strings, '(?<=[–-]\s).*(?=\s\()')
[1] "word" "two words"