正则表达式在它们之间有空格时加入数字

时间:2022-06-20 21:45:07

I'm trying to build a regex that joins numbers in a string when they have spaces between them, ex:

我正在尝试构建一个正则表达式,当它们之间有空格时,它们会在字符串中连接数字,例如:

$string = "I want to go home 8890 7463 and then go to 58639 6312 the cinema"

The regex should output:

正则表达式应该输出:

"I want to go home 88907463 and then go to 586396312 the cinema"

The regex can be either in python or php language.

正则表达式可以是python或php语言。

Thanks!

谢谢!

2 个解决方案

#1


10  

Use a look-ahead to see if the next block is a set of numbers and remove the trailing space. That way, it works for any number of sets (which I suspected you might want):

使用前瞻来查看下一个块是否是一组数字并删除尾随空格。这样,它适用于任何数量的集合(我怀疑你可能想要):

$string = "I want to go home 8890 7463 41234 and then go to 58639 6312 the cinema";

$newstring = preg_replace("/\b(\d+)\s+(?=\d+\b)/", "$1", $string);
// Note: Remove the \b on both sides if you want any words with a number combined.
// The \b tokens ensure that only blocks with only numbers are merged.

echo $newstring;
// I want to go home 8890746341234 and then go to 586396312 the cinema

#2


3  

Python:

蟒蛇:

import re
text = 'abc 123 456 789 xyz'
text = re.sub(r'(\d+)\s+(?=\d)', r'\1', text)  # abc 123456789 xyz

This works for any number of consecutive number groups, with any amount of spacing in-between.

这适用于任意数量的连续数字组,其间具有任意数量的间距。

#1


10  

Use a look-ahead to see if the next block is a set of numbers and remove the trailing space. That way, it works for any number of sets (which I suspected you might want):

使用前瞻来查看下一个块是否是一组数字并删除尾随空格。这样,它适用于任何数量的集合(我怀疑你可能想要):

$string = "I want to go home 8890 7463 41234 and then go to 58639 6312 the cinema";

$newstring = preg_replace("/\b(\d+)\s+(?=\d+\b)/", "$1", $string);
// Note: Remove the \b on both sides if you want any words with a number combined.
// The \b tokens ensure that only blocks with only numbers are merged.

echo $newstring;
// I want to go home 8890746341234 and then go to 586396312 the cinema

#2


3  

Python:

蟒蛇:

import re
text = 'abc 123 456 789 xyz'
text = re.sub(r'(\d+)\s+(?=\d)', r'\1', text)  # abc 123456789 xyz

This works for any number of consecutive number groups, with any amount of spacing in-between.

这适用于任意数量的连续数字组,其间具有任意数量的间距。