匹配不以已知字符串列表结尾的字符串

2024-04-20 13:08:22 发布

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

我想匹配街道名称,可以是“St/Ave/Road”的形式。后缀可能根本不存在,所以可能只是“第一个”。我还想知道后缀是什么。什么是适合它的正则表达式?我试过了:

(.+)(\s+(St|Ave|Road))?

但第一组似乎贪婪地匹配整个字符串。我试着回顾一下(?<!),但无法使其正常工作,因为它不断地出现诸如“look-behind requires fixed-width pattern”之类的错误。在

如果有关系的话,我使用Python。在

有什么建议吗?在


Tags: 字符串名称错误街道width后缀形式pattern
3条回答

作为基于regex的解决方案的替代方案,如何:

suffix = s.split(' ')[-1]
if suffix in ('St', 'Ave', 'Road'):
  print 'suffix is', suffix
else:
  print 'no suffix'

如果必须使用正则表达式,只需将第一个匹配设置为非贪心的,如:r'.*?\s+(St|Ave|Road)$'

^{pr2}$

只需添加一个问号,使您的第一组不贪婪:

(.+?)(\s+(St|Ave|Road))?

你想要消极的展望

(?!(St|Ave|Road))$

相关问题 更多 >