正则表达式模式可根据首词和尾词进行拆分

时间:2018-09-05 17:34:40

标签: python regex nlp

address='''No-33-6,BEML Layout,Basaveshwaranagara 8th Main,Kamala Nagar,Near Academy Of Science and Knowledge,Bengaluru,Karnataka 560079'''

我尝试使用以下模式。但是。*匹配所有字符

re.findall('[n][o].*',adress)

根据第一个数字(否)和最后一个数字的6位数字的个人密码/邮政编码进行匹配

output:No-33-6,BEML Layout,Basaveshwaranagara 8th Main,Kamala Nagar,Near Academy Of Science and Knowledge,Bengaluru,Karnataka 560079

3 个答案:

答案 0 :(得分:3)

如果我正确理解了您的查询,则希望匹配以以下开头的字符串模式

  

以最后一个6位数字的密码/邮政编码结尾

  

即560079

以及之间的所有文本。

您可以按照以下步骤实现:

import re
address='''No-33-6,BEML Layout,Basaveshwaranagara 8th Main,Kamala Nagar,Near Academy Of Science and Knowledge,Bengaluru,Karnataka 560079'''
matches = []
matches = re.findall(r'\b(?=No)(.*)\b(\d{6,})\b', address)

这将返回:

  

[(''No-33-6,BEML布局,Basaveshwaranagara 8th Main,Kamala Nagar,靠近科学与知识学院,孟加拉国,卡纳塔克邦','560079']]

请参阅此处:https://regex101.com/r/2pXcMI/4

答案 1 :(得分:0)

以下内容如何?

([N][o]).*\b([0-9].....).*?$

这对您有用吗?应该根据您尝试过的正则表达式匹配第一个单词,然后捕获地址中的最后6位数字。您可以在这里https://regex101.com

进行测试

答案 2 :(得分:0)

re.findall('/No.+\d+/g', string_to_search)

从头到尾:

首先,我们要匹配前缀“否”,因此我们只使用两个不带方括号或方括号的字母。

接下来,我们必须确保在数字后缀。在大多数情况下,该数字的长度不会改变,但是我的答案包含了一种用于任何长度整数的方法。

如果两者都存在,则匹配为true。

因此,我们要收集内部的所有信息。这是通过.+完成的,这意味着“一个或多个字符(换行符除外)”