如何写一个正则表达式来删除所有不包含任何东西的大括号?
例如,{}
与{{}}
应减少到一个空字符串,但{{}
变得{
和{{A}{}}
变{{A}}
.
我目前正在s/\{\}//g
循环运行,直到字符串长度固定,但是有更好的方法吗?
Sch*_*ern 10
使用传统正则表达式匹配平衡对很难(如果不是不可能的话).幸运的是,PCRE和其他人有一个(?R)
递归匹配的扩展,将以递归方式匹配整个模式.
/\{(?R)*\}/
Run Code Online (Sandbox Code Playgroud)
这就是为了匹配在其中具有零个或多个支撑对的支撑对.有关详细信息,请参阅perlretut->递归模式和perlre->扩展模式 - >?R.