2

我正在用 php 过滤一些文本。我寻找这样的模式:

Mary [qtip:had|past tense of have] little lamb.

我从工具提示“have 的过去时”中提取锚文本“had”]

部分处理是使用正则表达式/\[qtip:([^\|\\]]+)\|?([^\\]]*)?\]/

这工作正常

我正在尝试扩展功能。

Mary [qtip:had|past [otherFunction:tense|verb form signalling time] of have] little lamb.

我头脑简单的模式发现"had"&"past [otherFunction:tense|verb form indicating time"

我想要一个跳过嵌入[]对的模式。这些在锚或工具提示中是不允许的。

4

1 回答 1

1

为什么要逃避|和双重逃避]?为了解决您的问题,只需禁止[在您的模式内打开即可。]这要求模式在不遇到任何嵌套方括号的情况下达到结束。

preg_match_all('/\[qtip:([^|[\]]+)\|?([^[\]]*)\]/', $input, $matches);

我还删除了最后一个,因为如果您在应该成为可选的模式上?使用 use ,它是多余的。*

于 2012-11-18T13:53:37.497 回答