$string = "On 0 8 February 2 0 1 4 , he visited the fair";
我想替换数字之间的空格,因此它变为"On 08 February 2014, he visited the fair"
如何使用正则表达式执行此操作?我可以通过索引执行for循环索引,但是如果给出大量文本,它将会很慢。
这是我想要实现的目标:
$string =~ s/([0-9]\s)+/substr($string,$-[0],$+[0]-$-[0])/g;
但它不起作用,因为substr不被视为正则表达式中的函数。有什么想法吗?
答案 0 :(得分:3)
您可以使用后视,并展望过滤此类空间,
$string =~ s/[0-9]\K [ ]+ (?=[,0-9])//xg;
答案 1 :(得分:0)
试试这段代码:
do{
$string =~s/(\d+)\s+(\d+)/$1$2/g;
} while($string =~/(\d+)\s+(\d+)/);
答案 2 :(得分:0)
您还可以尝试以下正则表达式
$string =~ s/(?<=\d)\s+(?![a-z])//ig;