【发布时间】:2016-05-09 22:01:04
【问题描述】:
我正在研究一种过滤和替换损坏的大括号标签(例如{{hello})的方法。我已经在 Stack 中尝试了一些正则表达式并自己尝试过。我来的关闭是使用这个正则表达式
(?=(\}(?!\})))((?<!\})\}) 选择下面示例代码块中的最后一个标签。但是它不会选择整个标签,它只是选择结束大括号}。
{{hello}}
{{world}}}
{{foobar}}
{{hello}
我需要做的是选择任何缺少第二个结尾大括号的标签,例如{{hello}。谁能帮我用正则表达式来选择这种类型的标签?
【问题讨论】:
-
也许像
(?<!{){{[^{}]+}(?!})这样的东西会有所帮助。 -
看
input.gsub(/(?<!{){{[^{}]+}(?!})/, "\\0}")。还是只想从最后一个“tag”中获取“hello”字符串? -
你允许
{{test\}}}和{{this {{too}}}}吗? -
Cary 发布了一个类似的解决方案。我的正则表达式只是确保第一个
{{前面没有另一个{,而关闭}后面没有}。 -
我发布了带有解释的答案。