Я пытаюсь извлечь текст из довольно неструктурированного текстового файла, считанного в R, с помощью функции readLines (файл в формате .json). Я хочу извлечь регулярное выражение, которое содержится в каждой строке и имеет следующий шаблон:

\"text\":\" some random text \"

Я знаю, что кавычки и обратная косая черта важны для регулярных выражений, поэтому я не понимаю, как их искать. Я пробовал это:

text <- regexpr('\\\"text\\\":\\(*?)\\\"', charactervector)

Но это не сработало.

Любые идеи? Заранее спасибо!

0
nikUoM 4 Янв 2016 в 20:30

3 ответа

Лучший ответ

Возможно, более ясный способ выразить это -

text <- regexpr('^[\\]"text[\\]":[\\]" some random text [\\]"', charactervector)

Это предполагает буквальную входную строку \"text\":\" some random text \"

Я понял, как заставить его работать только с символами '\', но это некрасиво.

ИЗМЕНИТЬ

Просто комментарий, я добавил ^ для привязки в начале, но это не нужно.

2
steveb 4 Янв 2016 в 17:51

Очень близко:

\\\"text\\\":\\\"(.*?)\\\"

Пример здесь: https://regex101.com/r/fA2pW4/2

0
John Shammas 4 Янв 2016 в 17:52

Использование просмотра назад и вперед:

s <- '\"text\":\" some random text \"'
m <- regexpr('(?<=\\\"text\":\\\" ).*(?= \\")' , s, perl = TRUE)
regmatches(s, m)
#[1] "some random text"
1
Roland 4 Янв 2016 в 17:51