如何在Python中执行此RegEx?

时间:2009-10-11 23:50:59

标签: python string

我想在03.00.00.00.00

转换此表格的电话号码+33.300000000

+33是指示它可以是2或3位数字。

之后的数字。是电话号码。它可以是9或10位数字。

我试着这样:

p = re.compile( "\+[0-9]+\.([0-9]+)", re.VERBOSE)
number = "+33.300000000"
p.sub("0\1", number)

但这不起作用。

然而,搜索接缝起作用:

>>> p.search(number).groups()
('300000000',)

之后如何在Python中修改03.00.00.00.00的0300000000?

感谢您的帮助,

Natim

2 个答案:

答案 0 :(得分:3)

最简单的方法是RE和纯字符串操作的混合,例如:

import re

def doitall(number):
  # get 9 or 10 digits, or None:
  mo = re.search(r'\d{9,10}', number)
  if mo is None: return None
  # add a leading 0 if they were just 9
  digits = ('0' + mo.group())[-10:]
  # now put a dot after each 2 digits
  # and discard the resulting trailing dot
  return re.sub(r'(\d\d)', r'\1.', digits)[:-1]

number = "+33.300000000"
print doitall(number)

根据需要发出03.00.00.00.00

是的,你可以在RE中完成所有操作,但这不值得头疼 - 混合工作正常; - )。

答案 1 :(得分:0)

在终端中它的工作原理如下:

p = re.compile( "\+[0-9]+\.([0-9]+)", re.VERBOSE)
number = "+33.300000000"
p.sub("0\\1", number)

在python脚本中它的工作原理如下:

p = re.compile( "\+[0-9]+\.([0-9]+)", re.VERBOSE)
number = "+33.300000000"
p.sub("0\1", number)