PCRE 正则表达式删除空括号
PCRE regex to remove empty braces
如何编写一个正则表达式来删除所有不包含任何内容的大括号对?
例如,{}
和 {{}}
应该减少为空字符串,但是 {{}
变成 {
而 {{A}{}}
变成 {{A}}
.
我目前正在 运行 s/\{\}//g
循环中,直到字符串长度固定,但是有更好的方法吗?
使用传统的正则表达式匹配平衡对即使不是不可能,也是很困难的。幸运的是 PCRE 和其他人有递归匹配的扩展,(?R)
将递归匹配整个模式。
/\{(?R)*\}/
这表示匹配内部有零个或多个大括号对的大括号对。有关详细信息,请参阅 perlretut->Recursive patterns and perlre->Extended Patterns->?R。
没有递归:
1 while s/\{\}//g;
如何编写一个正则表达式来删除所有不包含任何内容的大括号对?
例如,{}
和 {{}}
应该减少为空字符串,但是 {{}
变成 {
而 {{A}{}}
变成 {{A}}
.
我目前正在 运行 s/\{\}//g
循环中,直到字符串长度固定,但是有更好的方法吗?
使用传统的正则表达式匹配平衡对即使不是不可能,也是很困难的。幸运的是 PCRE 和其他人有递归匹配的扩展,(?R)
将递归匹配整个模式。
/\{(?R)*\}/
这表示匹配内部有零个或多个大括号对的大括号对。有关详细信息,请参阅 perlretut->Recursive patterns and perlre->Extended Patterns->?R。
没有递归:
1 while s/\{\}//g;