2014-02-20 57 views
0

真糊塗,有一大堆的地址我需要處理,我有一個地址線則郵編正則表達式AZ但後來排除串

的數據格式爲:

ASHLEY CLOSE, HAVEN, BH1 

我需要能夠得到ASHLEY CLOSE, HAVEN,然後BH1

我認爲這將是這樣的:

/^([A-Z ,]+)(?!, BH)/ 
+0

只有當它沒有被*,'BH'跟蹤時,它纔會匹配字符串 - 這看起來並不是你想要的。嘗試使用'(?= ...)'而不是 – Bergi

+0

我不知道你是否需要考慮這種編碼方式來捕捉郵政編碼,如果它始終是3位數字,甚至可以工作'(...) $'趕上最後「,」這將是足夠的'^(?:。*,)'。當然,這是簡單的伎倆:) – peet

回答

1

關於Ruby:

"ASHLEY CLOSE, HAVEN, BH1" =~ /^([A-| ,]+), ([A-Z0-9]+)/ 
=> 0 
> puts $1 
ASHLEY CLOSE, HAVEN 
=> nil 
> puts $2 
BH1 

我不認爲你需要一個先進的正則表達式有。

+0

哦,我的那是驚人的 –

2

這裏有一個非常基本例如:

/(.+,) (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