在我的街道名称正则表达式中添加另一种模式

问题描述

我已经有一个working example的正则表达式与大多数德国街道名称匹配。但是,我最近了解到,以下模式也是可能的:

  • A 1
  • K 7
  • H 2
  • P 1
  • 我7
  • E 7
  • T 3
  • Z 9

如何将这种模式构建到现有的Python-regex中?

^(?:[^\W\d_]+\.?|\([^\W\d_]+\.?\))(?:[- '’](?:[^\W\d_]+\.?|\([^\W\d_]+\.?\)))*$

解决方法

您可以仅使用|添加它。看来您的模式可以大大简化:

^(?:[A-Z] \d|[^\W\d_]{2,}\.?)(?:[- '’][^\W\d_]+\.?)*$

https://regex101.com/r/WRd1jx/7

,

您可以在匹配项中添加匹配的大写字符,后跟一个空格和1+个数字。

^(?:[A-Z] \d+|[^\W\d_]+\.?|\([^\W\d_]+\.?\))(?:[- '’](?:[^\W\d_]+\.?|\([^\W\d_]+\.?\)))*$

Regex demo