使用正则表达式Python RE在三位数后添加空格

时间:2018-05-01 22:02:55

标签: python regex python-3.x regex-lookarounds

我有一个值为 +91 1244567 的文字,我想在124之后添加一个空格,因此预期结果将变为: +91 124 4567

注意:输入可以是给定格式的任何数字。

我想在python 3.6中使用正则表达式执行此操作

提前感谢!

2 个答案:

答案 0 :(得分:1)

>>> import re
>>> print(re.sub(r"(\d{3})", r"\1 ", "+91 1244567", count=1))
+91 124 4567
>>> 

这仅替换第一个(count=1)三位数字(\1,对第一个捕获组的反向引用)加上一个空格。

答案 1 :(得分:0)

利用这些正则表达式技巧

  • \d位数
  • ?可选
  • regex groups
  • regex subitution

使用正则表达式:

(\+\d{2})\s?(\d{3})\s?(\d{4})
  • (\+\d{2}):第一个组找到一个以+字符开头,后跟2位数的子字符串。

  • \s?:第一组和第二组之间的可选空格

  • (\d{3}):第二组查找包含3位数的子字符串。

  • \s?:第二组和第三组之间的可选空格

  • (\d{4}):第3组找到包含4位数的子字符串。

代码:

>>> import re
>>> pattern = re.compile("(\+\d{2})\s?(\d{3})\s?(\d{4})")
>>> num = "+91 1244567"

>>> pattern.search(num).group(1)
'+91'
>>> pattern.search(num).group(2)
'124'
>>> pattern.search(num).group(3)
'4567'

利用re.sub强制你的正则表达式中的可选空格成为complusory空格:

>>> re.sub(pattern, r'\1 \2 \3', num)
'+91 124 4567'