Регулярное выражение для включения от слова до точки с запятой в Python - PullRequest
0 голосов
/ 23 января 2019

Итак, у меня есть следующая строка:

...
data={{...{...}...{..}}};
...

Я хочу получить все от "data =" до финала ";"

Также нет пробелов или точек с запятойвнутри данных

Редактировать:

"Реальные данные": data={"info":{"foo":"bar","blah":"boo"};

Вывод: '{"info":{"foo":"bar","blah":"boo"}'

Выполнение этого в скрипте Python с использованием re, после извлечения плохо сериализует его в JSON

Ответы [ 3 ]

0 голосов
/ 23 января 2019

Вы можете использовать (?<=data=).*?(?=;):

  • (?<=data=) lookbehind: он будет привязан сразу после data = string
  • (?=;) lookahead: он будет привязан прямо перед ; string
  • .*?: он будет соответствовать всем символам между якорями

const string = 'data={"info":{"foo":"bar","blah":"boo"};';
const regex = /(?<=data=).*?(?=;)/mg;

console.log(string.match(regex)[0]);
0 голосов
/ 23 января 2019

Этот объект является строгим, чтобы найти объект, так что символ { должен быть после data= и иметь что-либо между ними, включая newline, и он допускает пробелы после = и }

(?:data=)(\s*{(?:.|\n)*})(?:\s*;)

Хорошо иметь строгую строгость, потому что может быть какая-то другая переменная с именем data

https://regex101.com/r/0WVKcE/2

0 голосов
/ 23 января 2019

Ничего особенного не нужно;Вы можете просто использовать /data=\S+;/

Это захватывает data=, затем любые непробельные символы, затем ;.

const string = '[OMITTED] data={{...{...}...{..}}}; [OMITTED]';
const regex = /data=\S+;/

console.log(string.match(regex)[0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...