
我有一個文字文件,需要從中提取特定的資料元素。
範例文字:
你好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*0HIABK>N390~HIAPR>N390~HI*ABF>B9620*ABF>B961*ABF>N319*ABF>G8220*ABF>S12300S*ABF>G9520*ABF>Z1612~NM1*71*1*BoonF>G9520*ABF>Z1612~NM1*71*1*Boonyaputthikul ~LX*1~SV2*0551*HC>G0154*250*UN*4~DTP*472*D8*20180125~REF*6R*74990810~
我想提取:
達爾比尼安·塞瓦克 1306859178
布尼亞普提庫羅伯特 1700198801
用notepad++如何做到這一點?
答案1
這不能用 Notepad++ 一步完成,你可以這樣做:
第一步:
- 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~
在第二步中,您必須刪除最後一行。