2016-02-11 2 views
0

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

Вот мое выражение:

/(<li>.*?)(<\/li>)(.*?)(<br><(li|\/ul)>)/gi 

текст Я пытаюсь соответствовать выглядит следующим образом:

<ul><br><li> text before invalid closing tag</li> remaining text<br><li> this should also be matched</li> but isn't<br><li> text before invalid closing tag</li> remaining text<br></ul><br> 

Там должно быть 3 спички здесь, но я только получаю 2 из них. Вы можете проверить это по ссылке ниже, но средняя часть не соответствует. Я не уверен в правильном способе сопоставить текст с предыдущим совпадением.

http://regexr.com/3cp2v

+0

вы можете дать более подробную информацию о том, как мы можем сказать, что 'li' тег' неправильно-placed' –

+0

Это неверно в том контексте, в котором эти данные используются в приложении, но не обязательно из этой разметки перспектива. –

ответ

0

я был фактически в состоянии прийти к решению путем сопоставления шаблона до любого следующего открытия Li или закрытия UL тег. Это помешало совпадению совпадений, и мои результаты были сгруппированы по желанию.

/(<li>.*?)(<\/li>)(.*?)<br>(?=<(li|\/ul)>)/gi 
Смежные вопросы