簡體   English   中英

Python 正則表達式匹配街道名稱和門牌號

[英]Python regex to match street name and house number

我有一個匹配街道名稱的正則表達式(參見演示 1 ),我有一個匹配德國可能門牌號的正則表達式(參見演示 2 )。 每個正則表達式都可以正常工作。 在下一步中,我想結合兩個正則表達式(街道名稱+門牌號)。 換句話說,我正在尋找一個將街道名稱和門牌號碼匹配在一起的正則表達式。

我准備了一個帶有示例的演示 3 如果您將其與此處的嚴格規則進行比較,我知道這些示例並不完整,但對於我的用例來說已經足夠了。

由於正則表達式是一種基於規則的語言,讓我嘗試用文字來解釋規則:

  • 在德國,街道名稱基本上可以是各種名稱。 可以有一個. -介於兩者之間。
  • 即使是小寫字符,正則表達式也應該匹配
  • 在大多數情況下,門牌號碼是……。 9999a 但我試圖發揮創造力並添加了一些額外的可能示例

我的問題:我對每個單獨的情況都有解決方案(參見演示 1 和 2),但我的問題是我不知道如何將兩個正則表達式組合為一個(參見演示 3)。

街道名稱的工作正則表達式:

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

門牌號碼的工作正則表達式:

^[1-9]\d{0,3} ?[a-zA-Z]?(?: ?[/-] ?[1-9]\d{0,3} ?[a-zA-Z]?)?$

基於上面顯示的正則表達式,我如何將它們結合起來以匹配我在演示 3中顯示的示例?

將 2 個正則表達式合二為一:

^(?:[A-Z] \d|[^\W\d_]{2,}\.?)(?:[- '’][^\W\d_]+\.?)*\s+[1-9]\d{0,3} ?[a-zA-Z]?(?: ?[/-] ?[1-9]\d{0,3} ?[a-zA-Z]?)?$

更新的 RegEx 演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM