簡體   English   中英

從正則表達式Python中提取2個字符串

[英]Extracting 2 strings from regular expression Python

我正在嘗試使用正則表達式從字符串中提取城市,州和/或郵政編碼。 我正在使用的正則表達式(從這里從python中的字符串中獲取城市,州或郵政編碼 )是([^\\d]+)?(\\d{5})? 當我在http://regex101.com/對其進行測試時,它會准確選擇要匹配的兩個字符串。

但是我不確定如何在Python中分離這兩個字符串。 這是我嘗試過的:

import re

string = "binghamton ny 13905"

reg = re.compile('([^\d]+)?(\d{5})?')
match = reg.match(string)

return match.group()

這只是返回整個字符串。 有沒有辦法單獨拉每場比賽?

我還嘗試將正則表達式分成兩個不同的正則表達式(一個用於城市,州,一個用於郵政編碼),但是郵政編碼regex要么返回一個空字符串,要么返回None 感謝所有幫助,謝謝。

可能最簡單的方法是命名兩個捕獲組:

reg = re.compile('(?P<city>[^\d]+)?(?P<zip>\d{5})?')

然后訪問groupdict

>>> match = reg.match("binghamton ny 13905")
>>> match.groupdict()
{'city': 'binghamton ny ', 'zip': '13905'}

這使您可以輕松地通過名稱而不是索引來訪問兩條信息。

我會同意喬納沙普

string = "binghamton ny 13905"
reg = re.compile('(?P<city>[^\d]+)?(?P<zip>\d{5})?')
result = re.match(reg, string)

另外,您可以按如下名稱訪問變量:

result.group('city')
result.group('zip')

Python重新參考頁面

r = re.search("([^\d]+)?(\d{5})?")
r.groups()


(u'binghamton ny ', u'13905')

暫無
暫無

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

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