我有一些輸入字符串。從輸入字符串中分離城市和州的正則表達式
Houston, TX
(Houston, TX)
South & West (Houston, TX)
(South & West (Houston, TX))
我正在使用這種模式,但它不適用於所有四個。
.*\(*(.*),\s*(.*)\)*
我只想休斯頓和TX上面輸入的字符串。
規則是取出括號內的東西,或者如果沒有括號就是東西。結果列表中只有2個項目。
我有一些輸入字符串。從輸入字符串中分離城市和州的正則表達式
Houston, TX
(Houston, TX)
South & West (Houston, TX)
(South & West (Houston, TX))
我正在使用這種模式,但它不適用於所有四個。
.*\(*(.*),\s*(.*)\)*
我只想休斯頓和TX上面輸入的字符串。
規則是取出括號內的東西,或者如果沒有括號就是東西。結果列表中只有2個項目。
看一看蟒Regular Expression operations網頁 - 我發現它有用學習如何做這些類型的東西的時候。
我不知道,如果你想分離出城&狀態或沒有,但你可以這樣做使用groups像這樣:
import re
string = ('Houston, TX ' +
'(San Francisco, CA) ' +
'South & West (Houston, TX) ' +
'(South & West (Houston, TX))')
matches = re.findall("([\w\s]+),\s(\w+)", string)
for match in matches:
print 'City: ' + match[0] + ', State: ' + match[1]
輸出:
City: Houston, State: TX
City: San Francisco, State: CA
City: Houston, State: TX
City: Houston, State: TX
正則表達式:
([\w\s]+)
組1:用空格匹配多個單詞
,\s
逗號後面有一個空格
(\w+)
組2:匹配單個字
對不起,但我也應該添加狀態可能不總是2個字符那裏。它會繼續工作嗎? – Neutralizer
我修改了我的答案來處理超過2個字符的狀態,並解釋了我正在使用的正則表達式。 –
你爲什麼不使用。 :) – Neutralizer
>>> import re
>>> A="Houston, TX (Houston, TX) South & West (Houston, TX) Los Angeles, CA Los Angeles"
>>> re.findall("\w[A-Za-z ]+, [A-Z]{2}",A)
['Houston, TX', 'Houston, TX', 'Houston, TX', 'Los Angeles, CA']
\w
=將匹配所有名稱以一個字母
[A-Za-z ]+
=將匹配空間
, [A-Z]{2}
=會匹配所有的縮寫(兩個大寫字母)
當與'洛杉磯,CA'匹配時炸燬 – NullUserException
我用新的'regex'編輯我的答案 – Suku
我想我會這樣做的兩個步驟:
in_paren = re.compile(r'(?:\()([^\)\(]+)(?:\))')
match = in_paren.search(ss)
parts = match.group(1) if match else ss
city,state = parts.split(',')
這是作爲一個功能:
>>> def find_city_state(ss):
... match = in_paren.search(ss)
... parts = match.group(1) if match else ss
... return [x.strip() for x in parts.split(',')]
...
>>> for x in ("Houston, TX","(Houston,TX)","South & West (Houston, TX)","(South & West (Houston, TX))"):
... print find_city_state(x)
...
['Houston', 'TX']
['Houston', 'TX']
['Houston', 'TX']
['Houston', 'TX']
添加第四個輸入字符串 – Neutralizer
@UmairAshraf - 我修改了我的正則表達式來處理它。現在,我的正則表達式只採用最內層的括號分組。 – mgilson
+1我喜歡你的正則表達式和'?:'的使用 - 我甚至沒有注意到其他答案,直到我刷新頁面。 –
什麼這裏的規則是什麼?如果有括號,則將括號中的內容取出,否則取整行? – mgilson
你不能只說「我需要一個正則表達式來做到這一點」而不用英語定義規則。告訴我們規則是什麼,並向我們展示您嘗試過的正則表達式,然後我們可以從那裏幫助您。 –
「我只是想讓休斯頓和TX擺脫上面的輸入字符串」應該是一個規則。 – Neutralizer