Я хотел бы извлечь текст между de и en , а также текст в строках, в которых нет de или ru . Я не очень хорошо разбираюсь в регулярных выражениях, но, прочитав о просмотрах вперед и назад, мне удалось частично получить то, что я хочу. Теперь мне нужно сделать их необязательными, но что бы я ни пробовал, я не могу сделать это правильно. Любая помощь будет принята с благодарностью!
library(stringr)
(sstring = c('{\"de\":\"extract this one\",\"en\":\"some text\"}', 'extract this one', '{\"de\":\"extract this one\",\"en\":\"some text\"}', "p (340) extract this one"))
#> [1] "{\"de\":\"extract this one\",\"en\":\"some text\"}"
#> [2] "extract this one"
#> [3] "{\"de\":\"extract this one\",\"en\":\"some text\"}"
#> [4] "p (340) extract this one"
str_extract_all(string = sstring, pattern = "(?<=.de\":\").*(?=.,\"en\":)")
#> [[1]]
#> [1] "extract this one"
#>
#> [[2]]
#> character(0)
#>
#> [[3]]
#> [1] "extract this one"
#>
#> [[4]]
#> character(0)
желаемый результат:
#> [1] "extract this one" "extract this one"
#> [3] "extract this one" "p (340) extract this one"
Создано 08.05.2020 с помощью пакета (v0 .3.0)