嗨与python我想捕捉电话号码在文本,但要排除那些后面的话传真或传真。在
我使用以下正则表达式,如果句子以Fax或Fax开头,则有效,但如果Fax在句中则不起作用:
^(?!fax|Fax)(?:.*?)(?![-a-z])((?:[^0-9])((\+|00)33\s?|0|\(0\))[123456789][ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2})(?![0-9])
下面是我分析的一个文本示例:
^{pr2}$我的正则表达式的结果是:
Match 1
Full match 5-42 `Adresse quai du Sa fax 06 32 32 32 33`
Group 1. 27-42 ` 06 32 32 32 33`
Group 2. 28-29 `0`
Match 2
Full match 72-117 `faTel : 0 8 99 70 1761 – Fax : 06 32 32 32 34`
Group 1. 102-117 ` 06 32 32 32 34`
Group 2. 103-104 `0`
Match 3
Full match 118-157 `Mail :support@domain.com
06 32 32 32 35`
Group 1. 142-157 `
06 32 32 32 35`
Group 2. 143-144 `0`
Match 4
Full match 178-196 `tel 06 32 32 32 37`
Group 1. 181-196 ` 06 32 32 32 37`
Group 2. 182-183 `0`
但我不想在结果中出现“0632323234”和“063232333”,因为“传真”在前面。。。在
谢谢
您使用的是lookahead而不是lookbehind
(?<!..)
有了这个regex,我似乎可以得到所有的电话号码而没有传真号码:
我建议使用一个正则表达式,它将匹配您不需要的内容,但将匹配并捕获您需要的内容:
参见regex demo。绿色突出显示的物品是你需要抓住的。注意:您将在第1组中得到的数字应至少包含2位数字。另外,您可以根据进一步的要求来精确化模式,只需使用相同的“框架”,因为我试图简化regex结构以显示主要概念。在
详细信息
(?i)
-不区分大小写的修饰符fax
-子串fax
\W*
-任何0+非单词字符(您可以精确地将其精确到只使用空格和冒号,例如\s*(?::\s*)?
)\d
-一个数字[\s\d]*
-0+空格或数字|
-或者。。。在(\d[\s\d]*\d)
-组1(需要的值)\d
-一个数字[\s\d]*
-0+空格或数字\d
-一个数字Python在2中使用
^{pr2}$参见Python 2 demo
相关问题 更多 >
编程相关推荐