Regex to join numbers when they have spaces between them

情到浓时终转凉″ 提交于 2020-01-03 20:48: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.

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!