我想匹配以函数名和冒号开头的嵌套 Wiki 函数或 wiki 解析器函数,但是一旦我尝试让递归 pcre 正则表达式与 1 级测试一起工作,我就无法构建正则表达式模式。我想匹配以{{aFunctionName:
冒号开头的测试,在正则表达式{{[\w\d]+:
中,测试文本看起来像
1 {{DEFAULTSORT: shall be matched {{PAGENAME}} }}
2 {{DEFAULTSORT: shall be matched }}
3 {{DEFAULTSORT: shall be matched {{PAGENAMEE: some text}} }}
4 Lorem ipsum {{VARIABLE shall not be matched}}
5 {{Some template|param={{VARIABLE}} shall not be matched }}
我能够
- 获取任何嵌套的花括号,使用
{{(?:(?:(?!{{|}}).)++|(?R))*}}
它获取第 1、2、3、部分 4 和 5 - 获取任何嵌套的 wiki 函数,使用
({{(?:[\w\d]+:)(?:(?:(?!{{|}}).)++|(?1))*}})
它只获取第 3 行,但我也想匹配第 1 行和第 2 行。
但我不知道如何构建一个正则表达式模式来测试类似的东西(写成伪代码):
{{match1st-level-Function: then anything {{nested}} or not nested }}
{{do not match simple {{nested}} things}}
pcre 正则表达式专家有什么帮助吗?谢谢!