要根据第一个和最后一个单词拆分的正则表达式模式

2024-06-30 15:53:52 发布

您现在位置:Python中文网/ 问答频道 /正文

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位pincode/zipcode)进行匹配

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

Tags: andofnomainsciencelayoutknowledgeacademy
3条回答

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

No

以最后一项6位pincode/zipcode结束

i.e. 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 Layout,Basaveshwaranagara 8th Main,Kamala Nagar,Near Academy Of Science and Knowledge,Bengaluru,Karnataka ','560079')]

请看这里:https://regex101.com/r/2pXcMI/4

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

从头到尾:

首先我们要匹配前缀“No”,所以我们只需使用两个没有方括号或方括号的字母。你知道吗

接下来,我们必须确保at的数字是后缀。在大多数情况下,这个数字的长度不会改变,但是我的答案包含了一个任意长度整数的方法。你知道吗

如果两者都存在,那么匹配就是真的。你知道吗

所以我们想收集里面的所有信息。这是用.+完成的,意思是“除换行符外的一个或多个字符”

下面呢?你知道吗

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

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

相关问题 更多 >