真糊塗,有一大堆的地址我需要處理,我有一個地址線則郵編正則表達式AZ但後來排除串
的數據格式爲:
ASHLEY CLOSE, HAVEN, BH1
我需要能夠得到ASHLEY CLOSE, HAVEN
,然後BH1
。
我認爲這將是這樣的:
/^([A-Z ,]+)(?!, BH)/
真糊塗,有一大堆的地址我需要處理,我有一個地址線則郵編正則表達式AZ但後來排除串
的數據格式爲:
ASHLEY CLOSE, HAVEN, BH1
我需要能夠得到ASHLEY CLOSE, HAVEN
,然後BH1
。
我認爲這將是這樣的:
/^([A-Z ,]+)(?!, BH)/
關於Ruby:
"ASHLEY CLOSE, HAVEN, BH1" =~ /^([A-| ,]+), ([A-Z0-9]+)/
=> 0
> puts $1
ASHLEY CLOSE, HAVEN
=> nil
> puts $2
BH1
我不認爲你需要一個先進的正則表達式有。
哦,我的那是驚人的 –
這裏有一個非常基本例如:
/(.+,) (BH.+)/gm
# match anything with one or more characters until a comma
# capture any number of these groups until you meet your BH block
# capture BH and the following character
演示:http://regex101.com/r/xC0jB0
編輯
A better way會不會特意去找 「BH ......」 但只匹配字符串末尾的組:
/^(.+,) (.+)$/gm
只有當它沒有被*,'BH'跟蹤時,它纔會匹配字符串 - 這看起來並不是你想要的。嘗試使用'(?= ...)'而不是 – Bergi
我不知道你是否需要考慮這種編碼方式來捕捉郵政編碼,如果它始終是3位數字,甚至可以工作'(...) $'趕上最後「,」這將是足夠的'^(?:。*,)'。當然,這是簡單的伎倆:) – peet