我有一个字符串,我想匹配双方括号的内容: 例如:
<p><span>"Sed ut perspiciatis vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"</span></p><p><span>[[image file="2013-12/5s_1.jpg" alt="IPhone 5s" title="IPhone 5s" ]]</span></p><p><span>[[download file="2013-12/modulo-per-restituzione-prodotti-.pdf" icon="icon" text="" title="Download" ]]</span></p>
结果:
download file="2013-12/module-res.pdf" icon="icon" text="" title="Download"
image file="2013-12/5s_1.jpg" alt="IPhone 5s" title="IPhone 5s"
考虑到这两个字符串可以包含任何类型的字符,我尝试了这个解决方案但是我遇到了其他字符的问题:
\[\[[\w+\s*="-\/]*\]\]
答案 0 :(得分:1)
\[\[[^\]]*\]\]
此课程将匹配“]”
以外的任何内容 上查看为避免方括号成为结果的一部分,您可以使用capturing group
\[\[([^\]]*)\]\]
并从第1组获得结果
或使用lookaround assertions(如果你的正则表达式引擎支持它)
(?<=\[\[)[^\]]*(?=\]\])
上查看
答案 1 :(得分:1)
如果你可以使用前瞻:
\[\[(([^]]|[]](?!\]))*)\]\]
含义:
\[\[ # match 2 literal square brackets
( # match
[^]] # a non-square bracket
| # or
[]](?!\]) # a square bracket not followed by a square bracket
)* # any number of times
\]\] # match 2 literal right square brackets
或者您可以使用延迟量词:
\[\[(.*?)\]\]
答案 2 :(得分:0)
此正则表达式将选择方括号,但使用组(1),您将只能获取内容:
"\\[\\[\\(.*\\)\\]\\]"