1

У меня есть текстовый файл, из которого мне нужно извлечь определенные элементы данных.

Пример текста:

HI ABK> Z48812 ~ HI APR> 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 * ХК> G0154 * 250 * UN * 4 ~ DTP * 472 * D8 * 20180202 ~ REF * 6R * 74990814 ~ HL * 3 * 1 * 22 * 0 ~ HI ABK> N390 ~ HI APR> N390 ~ HI * ABF> B9620 * ABF> B961 * ABF> N319 * ABF> G8220 * ABF> S12300S * ABF> G9520 * ABF> Z1612 ~ NM1 * 71 * 1 * Boonyaputthikul * Robert ** ** XX * 1700198801 ~ LX * 1 ~ SV2 * 0551 * HC> G0154 * 250 * UN * 4 ~ DTP * 472 * D8 * 20180125 ~ REF * 6R * 74990810 ~

Я хочу извлечь:

Дарбинский Севак 1306859178

Boonyaputthikul Роберт 1700198801

Как это сделать с помощью блокнота ++?

1 ответ1

2

Это не может быть сделано за один шаг с Notepad++, вы можете сделать:

Первый шаг:

  • Ctrl+H
  • Найти что: (?:^|\G).+?NM1\*71\*1\*(.+?)\*{4}XX\*(\d+)
  • Заменить на: $1 $2\n
  • проверить обернуть
  • проверьте регулярное выражение
  • НЕ ПРОВЕРИТЬ . matches newline
  • Заменить все

Объяснение:

(?:             : 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~

На втором шаге вы должны удалить последнюю строку.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .