PHP:确定regex的重要性顺序



我在使用语法高亮笔时遇到了一个问题。PHP支持包含在""''之间的字符串。不像c#,只允许""更容易控制,@选项自动转义字符串。

如果我有两个字符串,像这样:

$code = "print( "<div class='test'>content?div><div class='test'>content</div>" );";

如果我回显$code,我会得到:

print( "<div class='test'>content?div><div class='test'>content</div>" );

我的问题是。当我解析起始引号和结束引号之间的内容时,我使用剪贴板工具(只是复制粘贴)删除了这些内容以便稍后再放回去(这样我就不会交叉突出显示)。我设置它来解析''之间的内容首先使用regex。最终结果(在这两个字符串类型之后)如下所示:

print( "<div class=>content?div><div class=>content</div>" );

我如何修改我的regex向后看(从开始)和向前(从结束)寻找最顶层的字符串分隔符('")。这很难解释,希望有人能理解,否则我只能忍受了。

这在正则表达式中是不可能的;它们不够强大,无法处理递归。它们不能正确关闭嵌套括号,也不能正确关闭嵌套引号。对于这种功能,您至少需要一个下推自动机(或上下文无关的语言)。

最新更新