1

カスタム正規表現クリーン変換(ここにある情報)を使用して、混合アドレス列(Address3)から郵便番号を抽出し、それを新しい列(Post Code)に移動しようとしています。

受信データの例:

Address3: "London W12 9LZ"

着信データは、地名と郵便番号の任意の組み合わせで、開始、中間、または終了(またはまったくない)にすることができます。

望ましい結果:

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

基本的に、平易な英語では、「address3から見つかった郵便番号を郵便番号に移動(コピーではない)」します。

私の正規表現のスキルは素晴らしいものではありませんが、次の正規表現を使用して郵便番号を抽出し、それを独自の列に入れて、Address3から照合し、郵便番号に置き換えることができました。

一致式:

(?<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"

私の次の考えは、上記の一致/置換を維持してから、上記の正規表現に一致しないものに一致するように別の正規表現を追加することです。ネガティブな先読みかもしれないと思いますが、うまくいかないようです。

私はSSIS2008R2を使用していますが、正規表現のクリーンな変換では.net正規表現の実装が使用されていると思います。

ありがとう。

4

1 に答える 1

1

これを解決しました。いつものように、それは私が思っていたよりも単純な論理でした。郵便番号以外の文字列を照合して自分自身に置き換える代わりに、郵便番号に再度一致する別の行を追加して「」に置き換えました。

したがって、合計すると、次のようになります。

  1. 上記の正規表現を使用して郵便番号を照合し、[郵便番号]列に移動します
  2. 上記の正規表現を使用して郵便番号を照合し、Address3列の「」に置き換えます
于 2012-07-05T15:29:00.123 に答える