我在Notepad ++中打开了一个csv文件,并尝试使用“搜索/替换”功能并选中“正则表达式”来查找缺少0的电话号码。
我已经开始将我的正则表达式(\d[0-9]{10})
找到所有电话号码,但我只需要找到缺少前导0的那些。
请问适当的RegEx模式是什么?
csv文件的测试数据:
ID,TITLE,FNAME,SNAME,GENDER,PHONE,MOBILE,DOB,
1,Mrs,Sue,Mac,Female,01702 11000,07961111111,23/4/1958
01,Mrs,Sue,Mac,Female,1702 11000,07961111111,23/4/1958
2,Mr,Jim,Bell,Male,01698502269,07961111111,5/5/1958
3,Mr,John,Smith,Male,,,,,,,,17/5/1958 00:00:00
4,,Batman,Smith,,,,,,,01389 111 111,07961111111,29/5/1958
04,,Batman,Smith,,,,,,,1389 111 111,07961111111,29/5/1958
5,Mr.,Hulk,Smith,Male,01389 111 111,07961111111,2/6/1958
6,Mr.,Hulk,Briggs,Male,21,07961111111,6/6/1958
06,Mr.,Hulk,Briggs,Male,21,7961111111,6/6/1958
7,Mr.,Mike,Brigs,Male,15-20,07961111111,6/6/1958
8,Mr.,Mike,Briggs,Female,20,07961111111,6/6/1958
9,Mr,David,Golden,Male, 01254 111111,07961111111,10/6/1958
10,Mr,Pete,Lee,Male,020 7111 1111,07961111111,22/6/1958
11,Ms,Karren,Lee,Female,02881111111,07961111111,4/7/1958
12,Ms,Lisa,Bond,Female,,,,,,01411111100,07961111111,16/7/1958
13,Mr,Murdasa,Smith,Male,01268 000 000,07961111111,20/7/1958
14,,Brian,Smith,,(0)1753 604000,07961111111,24/7/1958
15,,Brian,Smith,,12 (0)1753 604000,07961111111,24/8/1958
015,,Brian,Smith,,12 ()1753 604000,07961111111,24/8/1958
答案 0 :(得分:4)
您应该将\d
(任意数字)替换为[1-9]
(任何数字但 0)。
如果我说得对,那么您需要的RegEx模式是:\b([1-9](\d *){9})\b
,您可以将{9}
调整为{8,10}
,具体取决于所需的电话号码长度。
编辑:添加字边界(\b
)并让模式忽略入站空格
答案 1 :(得分:1)
看起来你需要匹配甚至少于11个符号。
您可以使用(?<=,)\b[1-9][0-9 ]{3}[ 0-9]{6,}
正则表达式获取电话号码。
这些行匹配:
1702 11000
,07961111111,23 / 4/1958 1389 111 111
,07961111111,29 / 5/1958 7961111111
,6/6/1958 答案 2 :(得分:0)
您错过了结束边界,因此您获得了11位数字的前10位数字。
尝试(\ b [0-9] {10} \ b)
但是这会找到Hulk Briggs先生的电话号码,如果号码中有0,则没有任何作用。
不确定您的问题是否正确。您是否正在寻找不以0位数字开头的数字?你在寻找任何没有零的数字吗?
答案 3 :(得分:0)
&#34;不是零&#34;是[1-9]
,但它并不像使用它那么简单,因为您的某些电话号码有空格,并且您需要确保不要通过数字开始匹配。
试试这个:
(?<=,)[1-9][0-9 ]{8,10}(?=,)
请参阅live demo。
这匹配逗号(但不包括它们)并允许数字的长度为9到11(您可以通过更改长度范围轻松调整)。
答案 4 :(得分:0)
检测测试样本中缺少前导0的所有电话号码的正则表达式是:
\b(?<!\(0\))[1-9](?: ?\d){8,9}\b
或以评论形式:
\b (?# detect leading word boundary)
(?<!\(0\)) (?# confirm that it is not preceded by parenthesized 0)
[1-9] (?# detect a non-zero digit)
(?: ?\d){8,9} (?# detect 8-9 digits, each possibly preceded by a space)
\b (?# detect trailing word boundary)