我试图过滤掉特定文本中的potential Citizen Service Numbers(荷兰语的BSN),这些文本中也充满了荷兰语电话号码。电话号码以+31国家/地区代码开头,而BSN号码不以+31国家/地区代码开头
有人能帮我找到正则表达式来匹配任何不以^{开头的9位数字吗
例如,在句子中:
The number is +31 713176319 and 650068168 is another one.
我想提取650068168
,但不是713176319
。这可能通过消极的前瞻性解决,但我无法找到正确的解决方案
Tags:
使用负回溯:
这可以确保9位数字前面没有(“+”后跟两位数字和空格字符)
Demo
请注意,这仅在国家/地区代码为两位数时有效,如您的示例所示。为了支持一位或三位的国家代码,事情变得有点棘手,因为python不支持非固定宽度的lookbehind。但是,您可以像这样使用多个lookbehind:
Demo
我建议在这里使用
re.findall
:这张照片是:
这里的正则表达式策略是匹配一个9位数的独立数字,当它出现在字符串的最开始,或者它前面有一个“单词”(单词在这里被松散地定义为
\S+
),它是而不是国家代码前缀下面是对所用正则表达式的解释:
相关问题 更多 >
编程相关推荐