ymhld 发表于 2020-1-27 16:07

pytnon正则表达式的问题 已解决,请标注:

本帖最后由 ymhld 于 2020-1-27 17:32 编辑

在下述字符串:

(?<!\d)1\d{9}(?!\d)

7515909321918726
收货人: 大头

地址:福建省 泉州市 安溪县 蓝溪国际·水晶城8号楼

邮编:000000

电话:15905050000

座机:取消召回客户要的

2019-05-24 11:30:25 小一(98222229195)
好的

2019-05-24 11:58:54 旗舰服-小魏(131999512794)
运单号:7514970073125023

快递公司:中通快递
收货人: 林小姐

地址:广东省 中山市 古镇镇曹五宝源首巷1119号

邮编:000000

电话:13320980000
不是本人签收
2019-05-23 19:59:01 丧(11023044002)
8059781193798388897
李小三,15200970001,,海南省 海口市 美兰区 美兰区 美兰区 美兰区 大通快递,000000
召回

2019-05-23 19:59:36 丧(11023097002)
805986398267943302
韩大梅,18711114029,,山东省 潍坊市 诸城市 山东省 潍坊市潍坊市 潍坊市 潍坊市 潍坊市,000000
召回
2019-05-24 8:40:17 -盼盼(4688111316)
600191222114417089
收货人:      梧桐
地址:      河北石家庄市新华区新华区新华区新华区新华区新华区1003
手机号:      18044336097
召回

2019-05-24 8:40:35 古盼盼(4688111116)
600003141199842922
收货人:      肖丽
地址:      广东深圳市南山区南山区南山区南山区南山区南山区
手机号:      18111557709
召回


在上述字符串中,只匹配出
15905050000
13320980000
15200970001
18711114029
18044336097
18111557709


用:\d{11}(?!d)

16
75159093219
15905050000
98222229195
13199951279
75149700731
13320980000
11023044002
80597811937
15200970001
11023097002
80598639826
18711114029
60019122211
18044336097
60000314119
18111557709

匹配多了

梦汐 发表于 2020-1-27 16:32

一堆不规律的文本,想要用正则取而不出错基本不可能

梦汐 发表于 2020-1-27 16:40

不过通过一些修改就可以达到完全正确取到的效果

梦汐 发表于 2020-1-27 16:45

漁滒 发表于 2020-1-27 16:51

(?<!\d)1\d{9}(?!\d)

jidesheng6 发表于 2020-1-27 16:53

和楼上说的一样,不做修改的话想要不出错不可能

ymhld 发表于 2020-1-27 17:05

aiai 发表于 2020-1-27 16:51
(?

是对的,你这个软件是什么?能告诉一下?

518 发表于 2020-1-27 17:06

用一个列表构建所有的手机号开头即可(不排除意外情况,例如正好以这些数字开头的脏匹配)
import re
start =
l = []
for c in start:
    com = "[^0-9]"+str(c)+"{8}"+"[^0-9]"
    li = re.findall(com,txt)
    for i in li:
      l.append(i)
print(l)

ymhld 发表于 2020-1-27 17:08

518 发表于 2020-1-27 17:06
用一个列表构建所有的手机号开头即可(不排除意外情况,例如正好以这些数字开头的脏匹配)


恩,这个是一个方法,不过更想弄个简单点的正则,
(?<!\d)1\d{9}(?!\d)
这个是对的

ymhld 发表于 2020-1-27 17:12

本帖最后由 ymhld 于 2020-1-27 17:13 编辑

aiai 发表于 2020-1-27 16:51
(?
https://tool.oschina.net/regex

找到了,谢谢,用了一个别的表达式的,总出错,还是这个好
页: [1]
查看完整版本: pytnon正则表达式的问题 已解决,请标注: