【问题标题】:PCRE regex to remove empty bracesPCRE 正则表达式删除空括号
【发布时间】:2015-08-01 04:50:03
【问题描述】:

如何编写一个正则表达式来删除所有不包含任何内容的大括号对?

例如,{}{{}} 应简化为空字符串,但 {{} 变为 {{{A}{}} 变为 {{A}}

我目前正在循环运行s/\{\}//g,直到字符串长度固定,但有更好的方法吗?

【问题讨论】:

标签: regex perl pcre


【解决方案1】:

使用传统正则表达式匹配平衡对很困难,如果不是不可能的话。幸运的是 PCRE 和其他人有一个扩展来递归匹配,(?R) 会递归匹配整个模式。

/\{(?R)*\}/

这表示匹配其中包含零个或多个大括号对的大括号对。请参阅perlretut->Recursive patternsperlre->Extended Patterns->?R 了解更多信息。

【讨论】:

    【解决方案2】:

    没有递归:

    1 while s/\{\}//g;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-14
      • 2018-08-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-04
      • 2014-10-09
      • 1970-01-01
      • 2014-11-07
      相关资源
      最近更新 更多