簡體   English   中英

用於德國稅號的 Python 正則表達式

[英]Python Regex for German tax numbers

我需要幫助來完成我的德國稅號正則表達式。 這些數字的格式取決於州。 我幾乎可以匹配所有狀態。 剩下的唯一州是黑森州和不來梅。 問題是,它們與其他號碼(如電話號碼)非常相似。 我的演示中有一個完整的示例。

也許你可以幫我匹配所有相關的數字。

這是我的正則表達式:

(?:\d{3}\s?/\s?\d{3}\s?/\s?\d{5})|(?:\d{2}\s?/\s?\d{3}\s?/\s?\d{5})|(?:\d{3}\s?/\s?\d{4}\s?/\s?\d{4})|(?:\d{5}\s?/\s?\d{5}\b)|(\d{11})|(\d{10})

這些是為了完成所有狀態的正則表達式而留下的關鍵模式:

Hessen: 02581580201
025 815 80201

Bremen: 7581508152
75 815 08152

您可以在可選的空白字符之間匹配/ ,或者使用(?:\\s?/\\s?|\\s)匹配空白字符

最后的部分可以縮短為\\d{10,11}

前兩部分可以縮短為d{2,3}\\s?/\\s?\\d{3}\\s?/\\s?\\d{5}

\b(?:\d{2,3}(?:\s?/\s?|\s)\d{3}(?:\s?/\s?|\s)\d{5}|\d{3}(?:\s?/\s?|\s)\d{4}(?:\s?/\s?|\s)\d{4}|\d{5}(?:\s?/\s?|\s)\d{5}|\d{10,11})\b

解釋

  • \\b單詞邊界,以防止匹配成為較大單詞的一部分
  • (?:非捕獲組
    • \\d{2,3}(?:\\s?/\\s?|\\s)\\d{3}(?:\\s?/\\s?|\\s)\\d{5}匹配 2-3 位數字, 然后是 3 位數字和 5 位數字
    • | 或者
    • \\d{3}(?:\\s?/\\s?|\\s)\\d{4}(?:\\s?/\\s?|\\s)\\d{4}匹配 3 位數字、4 位數字和4位數
    • | 或者
    • \\d{5}(?:\\s?/\\s?|\\s)\\d{5}|\\d{10,11}匹配 5 位數字、5 位數字和 10 位或 11 位數字
  • )關閉非捕獲組
  • \\b一個詞邊界

正則表達式演示

如果數字之間的部分應該匹配,您還可以使用帶有反向引用的捕獲組來匹配第二部分中已經在第一部分中捕獲的相同部分。

暫無
暫無

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

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