Notepad++ を使用してドキュメントからテキストを抽出する

Notepad++ を使用してドキュメントからテキストを抽出する

特定のデータ要素を抽出する必要があるテキスト ファイルがあります。

例文:

こんにちはABK>Z48812~HIAPR>Z48812~HI*ABF>I2510*ABF>K810*ABF>I10*ABF>J449*ABF>F329*ABF>F419*ABF>I252~NM1*71*1*ダービニアン*セヴァク****XX*1306859178~LX*1~SV2*0551*HC>G0154*250*UN*4~DTP*472*D8*20180202~REF*6R*74990814~HL*3*1*22*0~HIABK>N390〜HIAPR>N390~HI*ABF>B9620*ABF>B961*ABF>N319*ABF>G8220*ABF>S12300S*ABF>G9520*ABF>Z1612~NM1*71*1*ブニャプティクル*ロバート****XX*1700198801~LX*1~SV2*0551*HC>G0154*250*UN*4~DTP*472*D8*20180125~REF*6R*74990810~

抽出したい内容:

ダービニアン・セヴァク 1306859178

ブニャプティクル ロバート 1700198801

Notepad++ でこれをどうやって実行できますか?

答え1

Notepad++ ではこれを 1 つのステップで実行することはできませんが、次のように実行できます。

最初の一歩:

  • Ctrl+H
  • 検索対象:(?:^|\G).+?NM1\*71\*1\*(.+?)\*{4}XX\*(\d+)
  • と置換する:$1 $2\n
  • チェック ラップアラウンド
  • 正規表現をチェック
  • チェックしないでください. matches newline
  • Replace all

説明:

(?:             : non capture group
  ^             : beginning of line
 |              : R
  \G            : position of last match
)               : end group
.+?             : 1 or more any character, not greedy
NM1\*71\*1\*    : literally "MN1*71*1*", asterisk have to be escaped
(.+?)           : group 1, 1 or more any character, not greedy
\*{4}XX\*       : 4 asterisks, XX, then 1 asterisk 
(\d+)           : group 2, 1 or more digit

交換:

$1      : content of group 1
        : a space
$2      : content of group 2
\n      : line feed, you could change it for the linebreak you need

与えられた例の結果:

Darbinian*Sevak 1306859178
Boonyaputthikul*Robert 1700198801
LX*1~SV2*0551*HC>G0154*250*UN*4~DTP*472*D8*20180125~REF*6R*74990810~

2 番目のステップでは、最後の行を削除する必要があります。

関連情報