Regex для различных тегов?

Не уверен, что я правильно сформулировал вопрос, так как я новичок в Regex. У меня есть регулярное выражение для синтаксиса, я работаю для BBCode в возвышенном. Это регулярное выражение отлично подходит при использовании таким образом:

(\[color=red?(.*?)\])(.*?)(\[/color\])

[color = red] Красный текст [/ color]

Это прекрасно работает для сопоставления / группировки кода. Но как мне поймать разные и дополнительные теги в матче? Например, если bbcode будет читать:

[центр] [размер =6][цвет = красный] [б] красный текст [/ b] [/ цвет] [/ размер] [/ центр] или

[центр] [размер =6][цвет = красный] [i] красный текст [/ i] [/ цвет] [/ размер] [/ центр]

Это регулярное выражение будет захватывать теги [b] и [i] в ​​3-й группе. Как бы я разделил теги [b] / [i] на другую группу и включил бы "различный" захват [u] [b] [i], если он использовался? Порядок не будет последовательным. Не уверен, как это будет сделано.

1 ответ

Решение

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

Другие вопросы по тегам