我有用户输入,在方括号内允许一些标签。我已经编写了正则表达式模式以查找和验证方括号内的内容。
在用户输入字段中,开放的括号可以用反斜杠进行转义,反斜杠也可以被另一个反斜杠进行转义 (\)。我需要使用回顾后发子模式来避免在开放的括号之前出现奇数个连续的反斜杠。
目前我必须处理类似这样的问题:
(?<!\\)(?:\\\\)*\[(?<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。