2017-09-01 13 views
0

私は今、この権利のように見える未フォーマットのテキストファイルがあります。 LASTNAMEFIRSTNAMEPHONE NUMBERLASTNAMEFIRSTNAMEPHONE NUMBERLASTNAMEFIRSTNAMEPHONE NUMBERLASTNAMEFIRSTNAMEPHONE NUMBERテキストファイル内のデータ分離

私のようにフォーマットしたいです:

LASTNAMEFIRSTNAMEPHONE NUMBER

新しい行にそれぞれの人と

LASTNAMEFIRSTNAMEPHONE NUMBER

LASTNAMEFIRSTNAMEPHONE NUMBER

。これは私が試したことです(PowerShell):

$content = [IO.File]::ReadAllText(".\output.txt") 
$content -replace "(555) ***-**** ", "`n" 
$content | Out-File .\test.txt 

しかし、それは動作しません。私の考えは、電話番号が行の最後にあるので、最後のスペースを改行で置き換えます。ほとんどの数字は同じ市外局番を持っています。

バッチスクリプトやPowerShellスクリプトが好きですか?私はそれがうまくいくとすれば、3番目の部分プログラムを開いていると思います。究極の目標は、各文字列を組織化されたスプレッドシートに入れることです。

+2

1.さまざまなケースの例をいくつか挙げてください。 2.すべての**数字が同じエリアコード*でない場合、正規表現が動作することは期待できません。(ほとんどの時間に対応するソリューションが必要な場合を除きます)*。 3. '*'は正規表現のワイルドカード文字です。 You'r正規表現はあなたが思っているものとマッチしていません。4.あなたの結果全体に電話番号を失うので、マッチ全体をキャリッジリターンに置き換えます。 –

+2

電話番号が常に数字で終わっていて名前に数字がない場合、この代替正規表現: '-replace '(?<= \ d)\ s'、" \ 'n" 'は、 (空白)を数字の後に置きます。スペースやタブなど。あなたの '(555)'は、カッコが正規表現のグループ演算子であるため間違っています。あなたはそれらをエスケープしてテキスト中の括弧にマッチさせる必要があります。しかし、正確なマッチングには、あなたが持っているデータの明確な例が必要です。 – TessellatingHeckler

+0

@LievenKeersmaekers - 1.すべてのケースは「ラストネーム」「ファーストネーム」「電話番号」です。2.数字の95%のようです。必要に応じて手動で残りをすることができます。 3.市外局番の後に数字が表示されるので、任意の番号を選択してください。 4.ああ...そうだ。今私はそれに取り組んでいます。また、2番目のコメントでコードを試しましたが、PowerShellウィンドウでは動作するようですが、アウトファイルでは動作しません。電話番号には数字しかありません。名前には数字はありません。 – jangles

答えて

1
(Get-Content '.\input.txt' -Raw) -replace '\(555\) \d{3}-\d{4}\s*', "`$0`r`n" | Out-File 'output.txt' 
関連する問題