问题
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.
Thanks!
回答1:
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:
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.
来源:https://stackoverflow.com/questions/6929981/regex-to-join-numbers-when-they-have-spaces-between-them