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