正则表达式文本修改全解析
1. 逗号分隔数字正则表达式
在处理数字时,有时需要对其进行逗号分隔,以提高可读性。如下代码:
$pop = s/(?<=\d)(?=(\d\d\d)+$)/,/g;
print "The US population is $pop\n";
此代码能按预期输出 “The US population is 298,444,215”。不过,包围 \d\d\d 的括号是捕获括号,而这里仅用于分组,将 + 应用于三个数字的集合,无需其捕获到 $1 的功能。可以使用非捕获括号 (?:...) ,将正则表达式改为 (?<=\d)(?=(?:\d\d\d)+$) ,这样更具体,后续阅读者无需疑惑与捕获括号关联的 $1 可能的使用位置,且更高效,因为引擎无需记住捕获的文本。但即便使用 (...) 表达式也可能较难阅读,使用 (?:...) 则更甚,所以这里选择了更清晰的呈现方式。
若要将此表达式扩展到包含在较大字符串中的数字,例如:
$text = "The population of 298444215 is growing";
$text = s/(?<=\d)(?=(\d\d\d)+$)/,/g;
print "$text\n";
超级会员免费看
订阅专栏 解锁全文
14

被折叠的 条评论
为什么被折叠?



