我試圖在 regex101.com 上的每一行文本上捕獲街道,但第 2 行的地址;“4241 Jerry Dove Drive”和 6 號線;“946 Douglas Dairy Road”給我帶來了麻煩,因為它們是唯一的三個單詞的街道名稱。一定有更好的寫法!
表達:
\s(\d{2,4}\s[A-Z]\w*\s[A-Z]\w*\sD?r?i?v?e?R?o?a?d?)
這是txt檔案:
Jazmine Holcomb 3212 Adams Avenue Washington MD eluir.azevedo.7[email protected]
Sofie Hagan 4241 Jerry Dove Drive Erie PA [email protected]
Cairo Tyson 3768 Clifford Street San_Jose CA [email protected]
Tasmin Kearney 2956 Adams Drive El_Campo CA 1[email protected]
Aydin Moran 3727 Sarah Drive Lake_Charles LA 3[email protected]
Samirah Pollard 946 Douglas Dairy Road Prosperity SC [email protected]
Jaskaran Wheeler 1521 Richards Avenue Torrance CA [email protected]
Gerrard Browning 4690 Felosa Drive Los_Angeles CA [email protected]
Haleema Craft 73 Pinchalone Street Norfolk VA 0[email protected]
Brett Neal 4079 Johnson Street Garner NC [email protected]
uj5u.com熱心網友回復:
這個正則運算式可能適合您:
\s(\d{2,4}(?:\s[A-Z]\w*){1,3}\s(?:Street|Drive|Avenue|Road))
它包含一個非捕獲組(?: ),用于最后一個詞之前的單詞,并說有 1 到 3 個這樣的詞,然后作為最后一個詞,它需要一個
- 街道
- 駕駛
- 大街
- 路
您還需要將最后一個單詞包含在非捕獲組中,否則,第一個變體將是 1 到 3 個單詞 “Street”,其他變體將只是“Drive”、“Avenue”或“Road”沒有前面的話。
如果您愿意,您可以將最后一個單詞之前的單詞數增加任意數量,或者通過僅使用 (一個或多個)而不是{1,3}(1 到 3 之間的任意數字)來增加無窮大
uj5u.com熱心網友回復:
嘗試這樣的事情:
\d [\w ]*?(?= \w \b[A-Z]{2}\b)
它說
- 一些數字
- 后跟一個空格
- 后跟字母和空格,直到
- 以空格、單詞、空格和正好兩個大寫字母開頭的被忽略組
uj5u.com熱心網友回復:
可能的(快速)解決方案如下:
import re
string = """Jazmine Holcomb 3212 Adams Avenue Washington MD [email protected]
Sofie Hagan 4241 Jerry Dove Drive Erie PA [email protected]
Cairo Tyson 3768 Clifford Street San_Jose CA [email protected]
Tasmin Kearney 2956 Adams Drive El_Campo CA [email protected]
Aydin Moran 3727 Sarah Drive Lake_Charles LA [email protected]
Samirah Pollard 946 Douglas Dairy Road Prosperity SC [email protected]
Jaskaran Wheeler 1521 Richards Avenue Torrance CA [email protected]
Gerrard Browning 4690 Felosa Drive Los_Angeles CA [email protected]
Haleema Craft 73 Pinchalone Street Norfolk VA [email protected]
Brett Neal 4079 Johnson Street Garner NC [email protected]"""
re_pattern = re.compile("(\d [a-z ] (?:Avenue|Drive|Street|Road))", re.I)
found = re_pattern.findall(string)
print(found)
印刷
['3212 Adams Avenue',
'4241 Jerry Dove Drive',
'3768 Clifford Street',
'2956 Adams Drive',
'3727 Sarah Drive',
'946 Douglas Dairy Road',
'1521 Richards Avenue',
'4690 Felosa Drive',
'73 Pinchalone Street',
'4079 Johnson Street']
正則運算式解釋:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/457093.html
標籤:正则表达式
上一篇:在雙冒號之前提取文本
