Regex для различных тегов?
Не уверен, что я правильно сформулировал вопрос, так как я новичок в Regex. У меня есть регулярное выражение для синтаксиса, я работаю для BBCode в возвышенном. Это регулярное выражение отлично подходит при использовании таким образом:
(\[color=red?(.*?)\])(.*?)(\[/color\])
[color = red] Красный текст [/ color]
Это прекрасно работает для сопоставления / группировки кода. Но как мне поймать разные и дополнительные теги в матче? Например, если bbcode будет читать:
[центр] [размер =6][цвет = красный] [б] красный текст [/ b] [/ цвет] [/ размер] [/ центр] или
[центр] [размер =6][цвет = красный] [i] красный текст [/ i] [/ цвет] [/ размер] [/ центр]
Это регулярное выражение будет захватывать теги [b] и [i] в 3-й группе. Как бы я разделил теги [b] / [i] на другую группу и включил бы "различный" захват [u] [b] [i], если он использовался? Порядок не будет последовательным. Не уверен, как это будет сделано.
1 ответ
Этот язык не является регулярным, то есть он не может быть выражен с помощью регулярных выражений. Вам нужна грамматика и парсер для захвата этого языка. Подробнее здесь.