Я работаю над написанием своего собственного парсера BBCode. я ОЧЕНЬ новичок в написании регулярных выражений.
Я пытаюсь сделать так, чтобы мое регулярное выражение соответствовало всем тегам, кроме случаев, когда они находятся внутри code
или же quote
тег. Вот что я имею в виду:
[b] This text will be bolded [/b]
[code][b] This text will NOT be bolded [/b][/code]
[b] This text will NOT be bolded [/b]
Проблема в том, что он соответствует тексту, который НЕ ДОЛЖЕН быть жирным шрифтом …
Вот мое регулярное выражение:
/((?!\[code\]) \[b\](.*)\[\/b\] (?!=\/code\]))/gi
И вы можете найти рабочий пример здесь: https://regex101.com/r/oI3mN8/2
Итак, мой вопрос, как я могу заставить это взять правильные вещи?
Постскриптум Как я могу заставить его захватить каждый кусок? Прямо сейчас это захватывает первое и последнее. Пример:
[b] This text should be bolded [/b]
This text should not be bolded, but it still is.
[b] This text should be bolded again [/b]
Почему-то просто захватывает первый и последний теги, почему?
Задача ещё не решена.
Других решений пока нет …