Как извлечь совпадение строки в скобках в R? - PullRequest
1 голос
/ 18 апреля 2020

Я хочу извлечь "a", "b" из ["a", "b"], если Содержимое в пределах [...] неизвестно до выполнения Операции. Так что [...] является единственным идентификатором.

Обычно извлечение работает как

stringr::str_match(string = ["a", "b"]', pattern = "LEFT(.*?)RIGHT")

Так что я должен найти sthg вместе:

stringr::str_match(string = '["a", "b"]', pattern = "[(.*?)]")

, но должен избегайте скобок, я думаю.

stringr::str_match(string = '["a", "b"]', pattern = "[[](.*?)[]]")

Возможно, теперь скобки сброшены, но не (.*?)?

Что я пробовал:

  • Обычно я бы выбрал скобку [, как [[], и использовал бы perl = TRUE. Поэтому я попытался:

    stringr::str_match(string = '["a", "b"]', pattern = "[[](.*?)[]]") , как показано выше.

  • Использовать регулярные выражения, например /[^[\]]+\[[^[\]]+\]/ из Извлечь строку в скобках

Ответы [ 2 ]

1 голос
/ 19 апреля 2020

Вы также можете использовать str_extract и положительный взгляд назад и вперед:

str_extract(str1, "(?<=\\[).*(?=\\])")
1 голос
/ 18 апреля 2020

Мы можем использовать str_replace, который непосредственно извлечет элементы

library(stringr)    
str_replace(str2, "\\[([^]]+)\\].*", "\\1")
#[1] "\"a\", \"b\""

Или с str_match

str_match(str2, "\\[([^]]+)")[,2]
#[1] "\"a\", \"b\""

data

str2 <- '["a", "b"]'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...