这是我原来的问题的继续:Perl- 如何在每个大写字母前插入一个空格,但除了第一次出现或已存在之外?
我能够实现在字符串中仅包含字母的情况下,在大写字母之间插入空格:
my $camel ="SomeCamel IsEnteringText";
$camel =~ s/(?<=[a-z])(?=[A-Z])/ /g;
$camel =~ s/([^[:space:]]+)/\u$1/g;
打印:
一些骆驼正在输入文本
但是,当数字出现时,我遇到了问题:
my $camel ="Some 440Camel220 IsEntering100Text Nogo";
$camel =~ s/(?<=[a-z])(?=[A-Z])/ /g;
$camel =~ s/([^[:space:]]+)/\u$1/g;
输出:
一些440Camel220正在输入100Text Nogo
期望:
一些 440 Camel 220 正在输入 100 Text Nogo
那么,我该如何在字母和数字之间插入空格呢?
|
分隔)匹配小写字母和大写字母或数字之间的转换,后半部分匹配数字和大写数字之间的转换。这个版本不会将a440
转换为a 440
;而我的会。我不知道这是否重要。我还认为最外层的(?:...)
是不必要的。实际上,在这个表达式中它什么也没做。 - Matt K