[英]Python regex, negate a set of characters in between a string
我有幾組字符串,數字后跟單詞和混亂的數字和單詞等。例如,
"Street 50 No 40", "5, saint bakers holy street", "32 Syndicate street"
我試圖將街道名稱與公寓號碼分開。
這是我當前的代碼:
import re
pattern_street = re.compile(r'[A-Za-z]+\s?\w+\s?[A-Za-z]+\s?[A-Za-z]+',re.X)
pattern_apartmentnumber = re.compile(r'(^\d+\s? | [A-Za-z]+[\s?]+[0-9]+$)',re.X)
for i in ["Street 50 No 40", "5, saint bakers holy street", "32 Syndicate street"]:
match_street = pattern_street.search(i)
match_apartmentnumber = pattern_apartmentnumber.search(i)
fin_street = match_street[0]
fin_apartmentnumber = match_apartmentnumber[0]
print("street--",fin_street)
print("apartmentnumber--",fin_apartmentnumber)
打印:
street-- Street 50 No
apartmentnumber-- No 40
street-- saint bakers holy street
apartmentnumber-- 5
street-- Syndicate street
apartmentnumber-- 32
我想從第一個街道名稱中刪除“否”。 即,如果有一條街道的末尾是No
,則需要將其作為公寓號,而不是街道。 我該如何為上面的示例字符串執行此操作?
先試試末尾有No 123
的情況,用正向先行。
如果沒有找到,請嘗試沒有這個的街道。
pattern_street = re.compile(r'[A-Za-z]+[\s\w]+(?=\s[Nn]o\s\d+$)|[A-Za-z]+[\s\w]+',re.X)
您可以通過以下正則表達式模式找到街道名稱,以從語句中刪除No [0-9] 。
pattern_street = re.compile(r'[A-Za-z]+((?!No).)+',re.X)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.