RegEx: Остерегайтесь, чтобы избежать нечетного количества последовательных обратных слешей
У меня есть пользовательский ввод, где некоторые теги разрешены в квадратных скобках. Я уже написал шаблон регулярных выражений, чтобы найти и проверить, что находится в скобках.
В пользовательском поле ввода открывающая скобка может ([) быть экранирована с помощью обратной косой черты, а также обратная косая черта может быть экранирована другой обратной косой чертой (\). Мне нужен вспомогательный шаблон, чтобы избежать нечетного количества последовательных обратных косых черт перед открывающей скобкой.
На данный момент я должен иметь дело с чем-то вроде этого:
(?<!\\)(?:\\\\)*\[(?<inside brackets>.*?)]
Он работает нормально, но проблема в том, что этот код по-прежнему совпадает с возможными парами последовательных обратных косых черт перед скобками (даже если они скрыты), а просмотр только проверяет, есть ли еще один обратный слеш, добавленный к парам (или непосредственно к открывающей скобке) , Я должен избегать их всех в группе наблюдения, если это возможно.
Пример:my [test] string is ok
my \[test] string is wrong
my \\[test] string is ok
my \\\[test] string is wrong
my \\\\[test] string is ok
my \\\\\[test] string is wrong
...
etc
Я работаю с PHP PCRE