RegEx:Заглянуть-во избежание нечетного числа последовательных обратных косых черт

У меня есть пользовательский ввод, в котором некоторые теги разрешены внутри квадратных скобок. Я уже написал шаблон регулярного выражения, чтобы найти и проверить, что находится внутри скобок.

В поле ввода пользователя, открывающем-скобку, ([)можно экранировать обратной косой чертой, также обратную косую черту можно экранировать другой обратной косой чертой (\). Мне нужно посмотреть -за шаблоном sub-, чтобы избежать нечетного количества последовательных обратных косых черт перед открытием -скобки.

На данный момент я должен иметь дело с чем-то вроде этого:

(?<!\\)(?:\\\\)*\[(?<inside brackets>.*?)]

Это работает нормально, но проблема в том, что этот код все еще соответствует возможным парам последовательных обратных косых черт перед квадратными скобками (, даже если они скрыты)и посмотрите-behind просто проверяет, есть ли еще одна обратная косая черта, добавленная к парам (или непосредственно к открывающей-скобке). Мне нужно избегать их всех внутри группы просмотра-за спиной, если это возможно.

Пример:

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

10
задан Wh1T3h4Ck5 8 March 2012 в 06:00
поделиться