从Wiki XML语法中提取图像路径

时间:2013-03-28 15:07:44

标签: php regex

我尝试解析我从xml wikipedia export

获得的Wikipedia XML

在一种情况下,我需要提取所有图像路径。原始标记看起来像,

  [[Bild:nameOfImage.png|image description]]

“Bild”也可以是“Image”,“File”或“Datei”

要提取图像的文本,请使用此正则表达式。

'|\[\[.*\|.*\]\]|U'

如果在图像描述中不是其他'[[..]]',则可以正常工作,例如

[[Bild:nameOfImage.png|image Description with a [[new wiki link]] ]]

我的问题是,我如何修改正则表达式以在第一个“[[”和最后“]]之间获取所有文字”而不计算所有“ ['an']'字符。

提前致谢

1 个答案:

答案 0 :(得分:2)

由于您使用的是PHP,因此您可能可以使用recursive patterns 考虑到你没有抓到任何东西:

/\[\[(((?>[^\[\]])|(?R))*)\]\]/U

请注意,我没有尝试过这个正则表达式,因为我无法使用PHP。

修改

preg_match('/\[\[(?>[^\[\]]|(?R))*\]\]/U', '[[Bild:nameOfImage.png|image Description with a [[new wiki link]] ]]', $array);
var_dump($array);

似乎有效。