У меня есть html в одной строке, которая может иметь или не иметь новые строки. Это может выглядеть примерно так:regex для получения тегов предыдущий и следующий
<table><tr><th>blah1</th></tr><tr><input class="inputClass"><span>open<pfelclose/>pfelsingle'pfeldouble"pfel</span></input></tr></table>
отформатированный красиво:
<table>
<tr>
<th>blah1</th>
</tr>
<tr>
<input class="inputClass">
<span>open<pfelclose/>pfelsingle'pfeldouble"pfel</span>
</input>
</tr>
</table>
Я хотел бы искать эту строку для
(open<pfel|close/>pfel|single'pfel|double"pfel)
, но и получить два открытых метки до и двух близких теги после. Так что я хотел бы получить что-то вроде:
<input class="inputClass"><span>open<pfelclose/>pfelsingle'pfeldouble"pfel</span></input>
Я не могу предположить, что вход или диапазон будет там, и я не могу предположить, что обязательно два тега до или два тега после.
Моя попытка, кажется, всегда тянуть весь начало строки:
.*[<]{0,2}?(open<pfel|close/>pfel|single'pfel|double"pfel)[/>]{0,2}?
Никогда не разбирайте html с регулярным выражением. Вместо этого используйте анализаторы HTML. – alecxe
Я бы с удовольствием, но все синтаксические анализаторы html, которые я использую, кодируют одинарные, двойные кавычки и знаки lt gt. – tophersmith116
Вы _want_ '"', чтобы стать '' ', правильно? Если нет, просто замените' '' на '"' после факта. – Taymon