2016-09-13 8 views
2

大きなCSVディレクトリに電話番号を書式設定しようとしています。私はこれが変更されると定期的にこれをフォーマットする必要がありますので、これは一回限りの解決ではありません。私は過去にNotepad ++のregex replace機能をうまく使用しており、可能であればこのツールを使いたいと思っています。しかし、私はよく慣れているPowerShellのようなスクリプティングを含む、より良い/より速いメソッドにオープンしています。データベースの数値フォーマットのNotepad ++ Regexを使用して電話番号をフォーマットする

サンプル:
XXXXXXX
XXXXXXX
XXXXXXXXXX
1XXXXXXXXXX
(XXX)XXXXXXX
1(XXX)XXXXXXX
(1XXX) XXX-XXXX
XXX-XXX-XXXX

最後の1つがすべての欲しいものです最後の出力のように見えるne番号。市外局番がないものについては、私はデフォルト値を追加します。余分な国コードを持つものについては、私はそれを切り捨てる必要があります。
FIND:1-(\d{3})-(\d{3})-(\d{4})
REPLACE:1 - \これは動作します
3 \ 2 - \ここ

は、私が使用した正規表現検索をいくつか紹介します!

FIND:1\((\d{3})\)\s(\d{3})-(\d{4})
はREPLACE:1 - \これは動作します
3 \ 2 - \!

ファインド番号:(\d{11})
置換:???
これは正しい文字列を検出しますが、出力のフォーマット方法はわかりません。

FIND:(\d{3})-(\d{4})
がREPLACE:XXX- \ 1 - \ 2
これはXXX-XXX-XXXXで正しい部分文字列を検索します(ここでXXXは、私が追加されます私の標準市外局番である)だけでなく、XXX- XXXXと+4が付いた郵便番号(XXXXX-XXXX)。 XXX-XXXXの前に何も置かずに、電話番号からXXXXを見つける必要があります。これはCSVファイルなので、各フィールドの前の実際の文字はカンマです。

私の問題は二重です。 1)見つけた文字列を、置換のために必要な部分に分割する方法がわかりません。私は桁のブロック(7,10,11桁)を変換し、パターンXXX-XXX-XXXXに合うようにフォーマットする必要があります。 2)私が探している文字列(つまりXXX-XXXXのみ)を選択する方法がわからない

答えて

関連する問題