如何只将[[words]]中的单词绘制成数组?
[[旭川市|旭川]](文化) - [[アイヌ]]文化,[[旭川市旭山动物园|旭山动物园]]など
我尝试了\[\[.*]]
但它没有用,也许是因为.*
仅适用于英文字符串..
答案 0 :(得分:2)
preg_match_all('/\[\[(.+?)\]\]/u',$str,$matches);
var_dump($matches);
答案 1 :(得分:0)
你需要反斜杠两面,所有方括号都需要转义。
这在Python中有效,可能需要修改PHP:
>>> re.compile('\[\[(.*?)\]\]')
<_sre.SRE_Pattern object at 0xb747ebf0>
>>> r=_
>>> r.search(text)
<_sre.SRE_Match object at 0xb7469560>
>>> r.findall(text)
['\xe6\x97\xad\xe5\xb7\x9d\xe5\xb8\x82|\xe6\x97\xad\xe5\xb7\x9d', '\xe3\x82\xa2\xe3\x82\xa4\xe3\x83\x8c', '\xe6\x97\xad\xe5\xb7\x9d\xe5\xb8\x82\xe6\x97\xad\xe5\xb1\xb1\xe5\x8b\x95\xe7\x89\xa9\xe5\x9c\x92|\xe6\x97\xad\xe5\xb1\xb1\xe5\x8b\x95\xe7\x89\xa9\xe5\x9c\x92']
嗯,也许我不得不逃避右方括号,结果证明在Python中没有必要。
答案 2 :(得分:0)
您可以先对Unicode进行编码:
[旭川市旭山動物園|旭山動物園]]などl]
答案 3 :(得分:0)
一个问题是您使用的是贪婪通配符:\[\[.*]]
将匹配从第一个[[
到最后一个]]
,包括任何干预{ {1}}。
现在,大多数正则表达式引擎都包含 nongreedy 通配符,通常为]]
,因此*?
一次只能匹配一个wikilink。