Goo*_*bot 1 php regex preg-match
我想捕获 MediaWiki 格式的图像标签,例如,
[[图片:Justus Sustermans - Galileo Galilei (Uffizi) 的肖像).jpg|left|thumb|upright|[[Galileo]] 通常被称为 [[现代天文学]] 之父,肖像由 [[Justus Sustermans] ] ]]
我必须忽略内部[[...]]以匹配整体(以粗体[[和 显示]])。我想出了
\[\[Image:((?:[^]]*+(?:(?!\[\[)|(?R))*+)*+)\]\]
Run Code Online (Sandbox Code Playgroud)
但它停在第一个]]。
或者您可以寻找平衡的方括号,但使用环视限制两端的规则:
(?=\[\[Image:)(\[(?:[^][]|(?1))*])(?<=]])
Run Code Online (Sandbox Code Playgroud)
(?=\[\[Image:) 前瞻搜索以开头的字符串 [[Image:(\[(?:[^][]|(?1))*]) 使用递归平衡嵌套方括号(?<=]]) Lookbehind 搜索以结尾的字符串 ]]查看测试用例
如果您不关心里面的括号是否平衡,但只想做出假设并排除[[ ]]对。这个应该可以解决问题:
\[\[Image:(?:\[\[.*?]]|.)*?]]
Run Code Online (Sandbox Code Playgroud)
查看测试用例
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |