PCRE正则表达式删除空括号

use*_*929 7 regex perl pcre

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

例如,{}{{}}应减少到一个空字符串,但{{}变得{{{A}{}}{{A}}.

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

Sch*_*ern 10

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

/\{(?R)*\}/
Run Code Online (Sandbox Code Playgroud)

这就是为了匹配在其中具有零个或多个支撑对的支撑对.有关详细信息,请参阅perlretut->递归模式perlre->扩展模式 - >?R.