什么是RegEx在Python中查找电话号码?

时间:2013-08-31 14:30:05

标签: python regex phone-number

我正在尝试在python中创建一个正则表达式来检测7位数字并从.vcf文件更新联系人。然后它将数字修改为8位数字(只需在数字前加5).Thing是正则表达式不起作用。

我在扫描字符串文字"

时收到错误消息" EOL
regex=re.compile(r'^(25|29|42[1-3]|42[8-9]|44|47[1-9]|49|7[0-9]|82|85|86|871|87[5-8]|9[0-8])/I s/^/5/')

#Open file for scanning
f = open("sample.vcf")

#scan each line in file
for line in f:
    #find all results corresponding to regex and store in pattern
    pattern=regex.findall(line)
#isolate results
    for word in pattern:
        print word
        count = count+1 #display number of occurences
        wordprefix = '5{}'.format(word)
        s=open("sample.vcf").read()
        s=s.replace(word,wordprefix)
        f=open("sample.vcf",'w')
        print wordprefix
        f.write(s)
        f.close()       

我怀疑我的正则表达式的格式不正确,无法检测具有2位数的特定数字模式,这些数字具有25x和29x等特定格式,可以是任何数字模式。(共7页)位)

任何人都可以帮助我采用正确的格式来采用这种情况吗?

1 个答案:

答案 0 :(得分:1)

/I不是你如何在python中为regex提供修饰符。你也不像s///那样进行替换。

您应该使用re.sub()进行替换,并将修饰符设为re.I,作为re.compile的第二个参数:

reg = re.compile(regexPattern, re.I)

然后对于字符串s,替换将如下所示:

re.sub(reg, replacement, s)

因此,你的正则表达式对我来说很奇怪。如果您想匹配7位数字,从2529开始,则应使用:

r'(2[59][0-9]{5})'

如需更换,请使用"5\1"。总而言之,对于字符串s,您的代码将如下所示:

reg = re.compile(r'(2[59][0-9]{5})', re.I)
new_s = re.sub(reg, "5\1", s)