具有多个匹配项的正则表达式-Python

具有多个匹配项的正则表达式-Python,python,regex,Python,Regex,我在网上搜索了一个类似的问题,但没有找到 以下是地址: 时尚潜力总部116 w 23街5号纽约州纽约市5楼 10011 在python中使用以下正则表达式,我试图在上行中找到所有可能的主地址: re.findall(r'^(.*)(\b\d+\b)(.+)(\bst\b|\bste\b)(.*)$', 'the fashion potential hq 116 w 23rd st ste 5 5th floor new york ny 10011') 我得到的结果如下: [('the fash

我在网上搜索了一个类似的问题,但没有找到

以下是地址:

时尚潜力总部116 w 23街5号纽约州纽约市5楼 10011

在python中使用以下正则表达式,我试图在上行中找到所有可能的主地址:

re.findall(r'^(.*)(\b\d+\b)(.+)(\bst\b|\bste\b)(.*)$', 'the fashion potential hq 116 w 23rd st ste 5 5th floor new york ny 10011')
我得到的结果如下:

[('the fashion potential hq','116','w 23th st','ste','5 5th floor new york ny 10011')]

我还希望结果包括:
('thefash…,'116','w23th','st','ste5th…)
。我原以为findall会这样做,但没有。非常感谢您的帮助

为了明确我想要的输出(或包含所有可能性的类似输出):
[
(‘时尚潜力总部’、‘116’、‘w 23’、‘st’、‘ste 5’、‘纽约州纽约市第五层10011’),
('the fashion potential hq','116','w 23th st','ste','5 5th floor new york ny 10011')]


您需要运行两个正则表达式,一个带有懒点,另一个带有贪心点

第一个是:

第二个内有“使用惰性点匹配”图案:

^(.*?)(\b\d+\b)(.+?)\b(ste|st|ave|blvd)\b\s*(.*)$
                ^^^    ^^^^^^^^^^^^^^^

输出:

the fashion potential hq 
116
 w 23rd 
st
ste 5 5th floor new york ny 10011
:

结果:

[
   ('the fashion potential hq ', '116', ' w 23rd ', 'st', 'ste 5 5th floor new york ny 10011'), 
   ('the fashion potential hq ', '116', ' w 23rd st ', 'ste', '5 5th floor new york ny 10011')
 ]

您需要运行两个正则表达式,一个带有懒点,另一个带有贪心点

第一个是:

第二个内有“使用惰性点匹配”图案:

^(.*?)(\b\d+\b)(.+?)\b(ste|st|ave|blvd)\b\s*(.*)$
                ^^^    ^^^^^^^^^^^^^^^

输出:

the fashion potential hq 
116
 w 23rd 
st
ste 5 5th floor new york ny 10011
:

结果:

[
   ('the fashion potential hq ', '116', ' w 23rd ', 'st', 'ste 5 5th floor new york ny 10011'), 
   ('the fashion potential hq ', '116', ' w 23rd st ', 'ste', '5 5th floor new york ny 10011')
 ]

你想让它包含那些东西是什么意思?它不是已经存在了吗?比如??使用正则表达式匹配整个地址,然后在其中找到要用单独的
re.replace()
替换的字符串。我很确定你们都缺少OP的要点。他的正则表达式很好用。他只是想得到所有可能的重叠匹配。你想让它包含那些东西是什么意思……它不是已经存在了吗?比如??使用正则表达式匹配整个地址,然后找到其中的字符串,你想用一个单独的
re.replace()
。我很确定你们都没有抓住OP的重点。他的正则表达式很好用。他只是想得到所有可能的重叠匹配。如果它按预期工作,我将添加模式解释。您是否看到他关于希望使用此来查找所有缩写(如
st
ste
)的评论,以便他可以替换它们?您的代码没有将
ste
提取为单独的匹配项。@WiktorStribiżew他确实有这两种可能性。问题是字符串包含多个匹配项,它既有
st
又有
ste
,并且regexp只找到第一个。@inblueswithu:对第一个
(.*)
->
(.*)
使用惰性匹配。至少它解决了部分问题。谢谢大家!!只是想让您知道,如果我将
ny
添加到我的
st
ste
列表中,即使同时使用两个正则表达式,它仍然会丢失
ste
结果。我知道这是一个复杂的问题,可能是我必须使用多个正则表达式来过滤我得到的所有街道尾部名称(st、ave、blvd等)。但是,我选择这个作为正确答案,因为它至少给了我我要寻找的答案的一部分。如果它按预期工作,我将添加模式解释。您是否看到他关于希望使用此来查找所有缩写(如
st
ste
)的评论,以便他可以替换它们?您的代码没有将
ste
提取为单独的匹配项。@WiktorStribiżew他确实有这两种可能性。问题是字符串包含多个匹配项,它既有
st
又有
ste
,并且regexp只找到第一个。@inblueswithu:对第一个
(.*)
->
(.*)
使用惰性匹配。至少它解决了部分问题。谢谢大家!!只是想让您知道,如果我将
ny
添加到我的
st
ste
列表中,即使同时使用两个正则表达式,它仍然会丢失
ste
结果。我知道这是一个复杂的问题,可能是我必须使用多个正则表达式来过滤我得到的所有街道尾部名称(st、ave、blvd等)。然而,我选择这个作为正确答案,因为它至少给了我一部分我正在寻找的答案。