Не могу захватить с Regex - PullRequest
       51

Не могу захватить с Regex

0 голосов
/ 17 ноября 2018

Я пытаюсь получить адресные данные из следующего текста.

<address>
Firstname Lastname<br />
Address 1<br />
ZIP City<br />
Country</address>

Регулярное выражение, которое я пробовал - (?<=>)(.*)(?=<\Q/\Eaddress)

По какой-то причине он ничего не может захватить.

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

(?<="from here")(.*)(?="to here")

Мне также удалось избежать косой черты.

Любая помощь будет очень признательна. Спасибо!

1 Ответ

0 голосов
/ 17 ноября 2018

Хотя вам следует избегать синтаксического анализа HTML с помощью регулярных выражений, но поскольку ваш случай кажется простым не вложенным регистром тега, вы можете захватить все данные между тегами, используя следующее регулярное выражение, и захватить данные в группе 1,

(?s)<address>(.*?)<\/address>

Поскольку ваши данные представляются в несколько строк, вам понадобится (? S) флаг в регулярном выражении, который позволяет точке соответствовать символам новой строки.

Вот демоверсия

И, в вашем собственном регулярном выражении, вам нужно было немного исправить и использовать флаг (? S), как я описал выше, чтобы он работал. Ваша версия регулярного выражения может быть исправлена ​​и использована следующим образом:

(?s)(?<=>)(.*?)(?=<\/address) (экранирование / с \)

OR

(?s)(?<=>)(.*?)(?=<\Q/\Eaddress) (не нужно бежать / если вы поместите его между \ Q и \ E)

Демо для вашего регулярного выражения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...