RegEx: h1, за которым следует h2 без р между - PullRequest
0 голосов
/ 26 мая 2010

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

<h1(.+?)</h1>(\s|(?!<p))*<h2(.+?)</h2>

1 Ответ

1 голос
/ 26 мая 2010
<h1((?!</h1).)*</h1>((?!<p).)*<h2

должно работать.

Он соответствует ровно одному тегу h1, затем любому количеству символов до следующего тега h2, но только если по пути не найдено тега p.

Поскольку в этом сценарии маловероятно, что появятся вложенные теги, это должно быть достаточно надежно, даже с регулярным выражением.

Вам нужно будет активировать опцию вашего инструмента / языка, чтобы точка соответствовала символам новой строки. Для этого может быть достаточно добавить к вашему регулярному выражению (?s).

...