2012-07-05 53 views
1

我試圖使用自定義正則表達式清理轉換(信息發現here)從混合地址列(地址3)中提取郵編並將其移至新的一列(郵編)輸入數據的如何從SSIS中的一列中使用正則表達式提取郵編

例子:

Address3: "London W12 9LZ" 

傳入的數據可能是地名的任意組合在開始後的代碼,中間或結尾(或根本不)。

期望的結果:

Address3: "London" 
Post Code: "W12 9LZ" 

從本質上講,用簡單的英語,「移動(不是複製)從2地址找到進入郵編任何職位代碼」。

我正則表達式技能並不輝煌,但我已經設法獲得儘可能提取後的代碼,並使用正則表達式如下得到它變成自己的列中,從地址3匹配和更換成郵編:

匹配表達式:

(?<stringOUT>([A-PR-UWYZa-pr-uwyz]([0-9]{1,2}|([A-HK-Ya-hk-y][0-9]|[A-HK-Ya-hk-y][0-9]  ([0-9]|[ABEHMNPRV-Yabehmnprv-y]))|[0-9][A-HJKS-UWa-hjks-uw])\ {0,1}[0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}|([Gg][Ii][Rr]\ 0[Aa][Aa])|([Ss][Aa][Nn]\ {0,1}[Tt][Aa]1)|([Bb][Ff][Pp][Oo]\ {0,1}([Cc]\/[Oo]\)?[0-9]{1,4})|(([Aa][Ss][Cc][Nn]|[Bb][Bb][Nn][Dd]|[BFSbfs][Ii][Qq][Qq]|[Pp][Cc][Rr][Nn]|[Ss][Tt][Hh][Ll]|[Tt][Dd][Cc][Uu]|[Tt][Kk][Cc][Aa])\ {0,1}1[Zz][Zz]))) 

替換表達式:

${stringOUT} 

因此,這給我留下了:

Address3: "London W12 9LZ" 
Post Code: "W12 9LZ" 

我的下一個想法是保持上述匹配/替換,然後添加另一個匹配任何不符合上述正則表達式。我認爲這可能是一個負面的看法,但我似乎無法使其工作。

我正在使用SSIS 2008 R2,我認爲正則表達式清理轉換使用.net正則表達式實現。

謝謝。

回答

1

剛剛解決了這個問題。像往常一樣,它比我想象的要簡單。與其試圖匹配非郵政編碼字符串並將它們替換爲它們自己,我已經再次添加了與郵編匹配的另一行,並用「」替換它。

因此,在總,我有:

  1. 匹配使用上述正則表達式,並將其移動到郵編列
  2. 匹配使用上述正則表達式,取而代之的是後置碼後置碼「」在Address3欄
相關問題