我不確定如何告訴 Python 中的正則運算式在找到第一個匹配項后停止。
顯然你可以告訴正則運算式是懶惰的,正則運算式- 第一次匹配后停止,我嘗試將 (.*?) 放在我的運算式的末尾,但這只是打破了它。我只是希望它在找到第一個完整地址后停止并回傳。
帶資料的示例代碼: https ://regexr.com/6okuv
在樣本資料中,除“Hindenburgdamm 27, Hygiene-Institut”之外的所有地址都被運算式接受,它應該在“27”之后停止并回傳“Hindenburgdamm 27”和“Peschkestr. 5a/Holsteinische Str. 44”,它應該在之后停止“5a”并回傳“Peschkestr. 5a”。
Regex expression :
^([A-Za-z????üü?\s\d.-] ?)\s*([\d\s] (?:\s?[- /]\s?\d )?\s*[A-Za-z]?-?[A-Za-z]?)?$
Sample data:
Berliner Str. 74
Hindenburgdamm 27, Hygiene-Institut
Peschkestr. 5a/Holsteinische Str. 44
Lankwitzer Str. 13-17a
Fidicinstr. 15A
Haudegen Weg 15/17
Johanna-Stegen-Strasse 14a-d
Friedrichshaller Str. 7
Südwestkorso 9
uj5u.com熱心網友回復:
您可以使模式對數字和尾隨字符更加具體,并使用不區分大小寫的匹配來匹配至少一個數字:
^([A-Z????üü?.\s-] ?)\s*(\d (?:[/-]\d )?(?:[A-Z](?:-[A-Z])?)?)\b
解釋
^字串的開始([A-Z????üü?.\s-] ?)捕獲組 1\s*匹配可選的空白字符(捕獲組 1\d匹配 1 個數字(?:[/-]\d )?可選匹配/-和 1 位(?:[A-Z](?:-[A-Z])?)?可選匹配 AZ 后跟可選-和 AZ
)關閉組 2\b一個詞的邊界
正則運算式演示
如果您只想要匹配并且不需要捕獲組,您可以省略它們。
請注意,在前導字符類中有類似和的字符.,如果匹配不應以這些字符中的任何一個開頭,則您可以從一個字符類開始,而無需跟隨可選重復的字符類以仍然匹配至少 1 個字符。-\s
^[A-Z????üü?][A-Z????üü?.\s-]*?\s*\d (?:[/-]\d )?(?:[A-Z](?:-[A-Z])?)?\b
正則運算式演示
uj5u.com熱心網友回復:
你可以試試這個模式
^([A-Za-z????üü?\s\d.-] ?\s[0-9a-zA-z????üü?-] ?)[\s\/,]?
在任何情況下,如果您不希望匹配整行,請不要使用 $ 來期望正則運算式達到 EOL。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/496676.html
上一篇:重置匹配令牌僅每兩個字符有效
