Я пытаюсь создать парсер bbcode, но у меня возникли некоторые проблемы с выяснением того, как избежать совпадения слишком широко. Например, я хочу, чтобы реализовать [список] для преобразования, как это:Строковое разделительное выражение
\[list\](.*)\[/list\]
будет заменен следующим образом:
<ul>$1</ul>
Это работает отлично, за исключением того, если у меня есть два списка, где регулярное выражение совпадает с начальный тег первого списка и конечный тег второго. Так что
[list]list1[/list] [list]list2[/list]
становится этим:
<ul>list1[/list] [list]list2</ul>
, который производит действительно уродливый выход. Любая идея о том, как это исправить?
Лучше постройте настоящий синтаксический анализатор, чем это псевдо-парсер регулярного выражения. По крайней мере, когда вы хотите вложенные списки, вы увидите, что регулярные выражения не являются ответом на каждый вопрос. – Gumbo