假设文本如下:
some text \( {{my}} \) more text \(some\) text {{my}} more text
some text {{my}} more text some text {{my}} more text
该文字包含两种特殊模式:{{...}}
和\(...\)
,{{...}}
模式可以在文本中以\(...\)
模式嵌套。
我的任务是编写一个regexp(在php中,所以PCRE引擎),它将匹配未嵌套在{{..}}
模式中的所有\(...\)
模式。因此,对于上面的示例文本,regexp应该只返回3个{{...}}
模式,因为第一个模式嵌套在\(...\)
中。
好吧,找到所有{{...}}
的模式是/\{\{(?P<options>.*?)\}\}/g
,我在这里有一个regex101小提琴:http://regex101.com/r/cQ1tQ4/1
是否可以创建一个如上所述的模式?
答案 0 :(得分:0)
您可以通过PCRE动词(*SKIP)(*F)
,
\\\([^{}]*\{\{[^}]*\}\}[^\\]*\\\)(*SKIP)(*F)|\{\{(?P<options>[^}]*)\}\}
答案 1 :(得分:0)