[英]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')
r = re.search("([^\d]+)?(\d{5})?")
r.groups()
(u'binghamton ny ', u'13905')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.