这是我原来的问题的延续: Perl- How do I insert a space before each capital letter except for the first occurrence or existing?如何在字母字符和数字字符之间插入空格?
我是能够实现与字符串中只有字母大写之间插入空格的一个期望的结果:
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是Entering100Text的Nogo
期望:
一些440骆驼220输入100文字Nogo
那么,我现在该如何在字母和数字之间插入一个空格?
我投了这个答案,因为我只需要使用两行而不是四行来获得我想要的结果。虽然我不得不承认,但我仍在努力研究那里发生的事情! – DulcimerDude 2010-12-14 14:23:39
他基本上和我的答案一样。分组的前半部分(用'|'分隔)匹配小写字母和大写字母或数字之间的转换,后半部分匹配数字和大写数字之间的转换。这个版本不会把'a440'变成'440';我的意志。我不知道这是否重要。我也认为最外层的'(?:...)'是不必要的。事实上,在这个表达中,它什么都不做。 – mkb 2010-12-14 14:25:27
我必须花一些时间,并围绕这一点。我想我已经得到了一点。我不想玩这个游戏,直到我真的能够自己写一个(单个字符替换之外)!再次感谢你... – DulcimerDude 2010-12-14 14:33:20