首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python中查找电话号码的RegEx是什么?

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

Stack Overflow用户
提问于 2013-08-31 22:30:05
回答 1查看 947关注 0票数 0

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

我有一个错误信息"EOL while scanning string literal“

代码语言:javascript
复制
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这样的特殊格式,5位数字可以是任何数字模式。(共7位数字)

在这种情况下,有人能帮我找出正确的格式吗?

EN

回答 1

Stack Overflow用户

发布于 2013-08-31 22:35:16

在python中,/I不是为正则表达式提供修饰符的方式。而且你也不会像s///那样做替换。

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

代码语言:javascript
复制
reg = re.compile(regexPattern, re.I)

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

代码语言:javascript
复制
re.sub(reg, replacement, s)

因此,在我看来,您的正则表达式看起来很奇怪。如果要匹配以2529开头的7位数字,则应使用:

代码语言:javascript
复制
r'(2[59][0-9]{5})'

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

代码语言:javascript
复制
reg = re.compile(r'(2[59][0-9]{5})', re.I)
new_s = re.sub(reg, "5\1", s)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18549236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档