正则表达式:一种特殊情况不匹配[重复]

Posted

技术标签:

【中文标题】正则表达式:一种特殊情况不匹配[重复]【英文标题】:Regex: one particular case is not matched [duplicate] 【发布时间】:2018-03-18 01:41:10 【问题描述】:

我正在尝试从动态 html 代码中清除短代码。

到目前为止,这是 ruby​​ 正则表达式:/(?:\[\/?)[^\/\]]+\/?\]/

它适用于所有像这样关闭的代码:

[vc_column]...[/vc_column]

但不是:

[vc_video link='https://vimeo.com/abc' align='center']
# In this case there is no [/vc_video]

这是 rubular 的固定链接:http://rubular.com/r/5et0W0Q73A 与 vc_video 内部不匹配。

有什么想法吗?谢谢。

【问题讨论】:

提示:您的视频短代码不匹配因为没有结束[/vc_video],而是因为网址中的斜线。 提示:regex101.com 比 rubular.com 好得多:) @SergioTulentsev 谢谢,但是如何解决这个问题才能正常工作? "如何解决这个问题" - 修改您的正则表达式,使其允许在标签内的任何位置使用斜杠。也许这会破坏其他一些用例。 ¯\_(ツ)_/¯ 我建议对此进行广泛的单元测试,以便您可以在引入回归时立即检测到。 你的问题一点都不清楚。你的输入是什么,你想要的输出是什么?正则表达式只是一个对象。除非您通过某种方法使用它,否则它不会做任何事情。 【参考方案1】:

解决方案是这个正则表达式:

\[(.*?)\]

【讨论】:

以上是关于正则表达式:一种特殊情况不匹配[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式特殊符号及用法

如何使用正则表达式匹配 Ruby 中包含特殊字符的重复模式?

正则表达式入门小结

常用正则表达式总结

正则表达式匹配

正则表达式