我在CMS的视图中翻译了一堆字符串,如下所示:
<a href="blah">[translate[This is the best website in the whole wide world!]]</a>
这非常感谢this solution但是我想把它带到下一步并在[translate [........]]标签中使用[website_name]等标签。使用当前的正则表达式跳过片段。
这就是我现在使用的:
(/\[translate\[([^\]]*)\]\]/)
是否可以忽略内部的任何[标签]?基本上我试图让它停在]]而不是其他任何东西。
所以基本上[翻译[这是整个世界上最好的[产品]!]输出将是这是整个世界中最好的[产品]!
TIA
答案 0 :(得分:2)
您需要在此处使用递归正则表达式。
\[translate\[((?:[^\[\]]++|\[\g<1>\])++)\]\]
Rubular(Ruby 1.9.2)+
如果您正在使用(Ruby 1.8.7),请在评论中说明:
\[translate\[((?>[^\[\]]+|\[\g<1>\])*)\]\]