Как определить идентификатор контейнера (4 слова и 7 цифр) в одной строке в файле кода EDI с помощью notepad ++ - PullRequest
0 голосов
/ 13 мая 2019

Идентификатор каждого контейнера состоит из 4 слов и 7 цифр (в файлах EDI - без пробела.)
В коде присутствуют строки из 11 цифр, которые также соответствуют выражению.Выражение имеет вид:

(\w{4}\d{7})

И это не полностью решает сопоставление из-за букв и цифр.
ссылка для демонстрации: https://regex101.com/r/vwH9nH/4
Еще одно выражение, более близкое к совпадению:

([A-Z]{4}d{7})

Это, кажется, более определено ближе, но не соответствует notepad ++ для выражения идентификатора контейнера.

В notepad ++ я пытаюсь:

  • Ctrl + H
  • Найти что: (([A-Z]{4}d{7})h*|(?s:.) определенный идентификатор контейнеров
    • Заменить на: (?1$1\n:)
    • checkОбтекание
    • check Регулярное выражение
    • Заменить все

Вот часть кода для копирования блокнота ++:

UNB+UNOA:2+RCW OPS CENTER+TERMINAL+180808:1519+1533741570C3ED+++++RCW OPS CENTER'UNH+01533741570BAP+BAPLIE:D:95B:UN:SMDG22'BGM++CAPSTAN4.20180808151930+9'DTM+137:1808081519UTC:301'TDT+20+081S+++HSD:172:166+++9V7575:103:ZZZ:MONTE VERDE'LOC+5+BRSSA:139:6'LOC+61+COCTG:139:6'DTM+178:1808090412:201'DTM+133:1808091512:201'DTM+132:1808180041:201'RFF+VON:081N'LOC+147+0380412::5'MEA+WT++KGM:29515'LOC+9+BRSSA:139:6+TECSV'LOC+11+COCTG:139:6+TCC'LOC+83+DOHAI:139:6'RFF+BM:1'EQD+CN+SUDU8505087+45G1+++5'NAD+CA+HSD:172:20'LOC+147+0380312::5'MEA+WT++KGM:29586'LOC+9+BRSSA:139:6+TECSV'LOC+11+COCTG:139:6+TCC'LOC+83+DOCAU:139:6'RFF+BM:1'EQD+CN+UACU5363691+45G1+++5'NAD+CA+HLC:172:20'LOC+147+0380212::5'MEA+WT++KGM:29591'LOC+9+BRSSA:139:6+TECSV'LOC+11+COCTG:139:6+TCC'LOC+83+COCTG:139:6'RFF+BM:1'EQD+CN+TGHU9702812+45G1+++5'NAD+CA+MSC:172:20'LOC+147+0380112::5'MEA+WT++KGM:29616'LOC+9+BRSSA:139:6+TECSV'LOC+11+COCTG:139:6+TCC'LOC+83+DOCAU:139:6'RFF+BM:1'EQD+CN+HLXU6240079+45G1+++5'NAD+CA+HLC:172:20'LOC+147+0380414::5'MEA+WT++KGM:29476'LOC+9+BRSSA:139:6+TECSV'LOC+11+COCTG:139:6+TCC'LOC+83+PRSJU:139:6'RFF+BM:1'EQD+CN+HASU4556735+45G1+++5'NAD+CA+HSD:172:20'LOC+147+0380314::5'MEA+WT++KGM:29476'LOC+9+BRSSA:139:6+TECSV'LOC+11+COCTG:139:6+TCC'LOC+83+DOHAI:139:6'RFF+BM:1'EQD+CN+SUDU6787839+45G1+++5'NAD+CA+HSD:172:20'LOC+147+0380214::5'MEA+WT++KGM:29481'LOC+9+BRSSA:139:6+TECSV'LOC+11+COCTG:139:6+TCC'LOC+83+COCTG:139:6'RFF+BM:1'EQD+CN+TGHU9861619+45G1+++5'NAD+CA+MSC:172:20'LOC+147+0380114::5'MEA+WT++KGM:29492'LOC+9+BRSSA:139:6+TECSV'LOC+11+COCTG:139:6+TCC'LOC+83+COCTG:139:6'RFF+BM:1'EQD+CN+HASU5014810+45G1+++5'NAD+CA+HSD:172:20'LOC+147+0301582::5'MEA+WT++KGM:29123'LOC+9+BRSSA:139:6+TECSV'LOC+11+COCTG:139:6+TCC'LOC+83+COCTG:139:6'RFF+BM:1'EQD+CN+CLHU4693498+42G1+++5'NAD+CA+MSC:172:20'LOC+147+0301482::5'MEA+WT++KGM:29160'LOC+9+BRSSA:139:6+TECSV'LOC+11+COCTG:139:6+TCC'LOC+83+PECLL:139:6'RFF+BM:1'EQD+CN+TCLU4424005+42G1+++5'NAD+CA+HLC:172:20'LOC+147+0301382::5'MEA+WT++KGM:29183'LOC+9+BRSSA:139:6+TECSV'LOC+11+COCTG:139:6+TCC'LOC+83+COCTG:139:6'RFF+BM:1'EQD+CN+...

В этом сопоставлении и замене у меня есть только одна пустая строка:
, и я хочу, чтобы все контейнеры были в одном столбце.

Мой ожидаемый вывод вбыть:

SUDU8505087
UACU5363691
TGHU9702812
HLXU6240079
HASU4556735
SUDU6787839
TGHU9861619
HASU5014810
CLHU4693498
TCLU4424005

Ответы [ 2 ]

0 голосов
/ 13 мая 2019

Заменить

.*?([A-Z]{4}\d{7})((?![A-Z]{4}\d{7}).)*

от

$1\n

и получите

SUDU8505087
UACU5363691
TGHU9702812
HLXU6240079
HASU4556735
SUDU6787839
TGHU9861619
HASU5014810
CLHU4693498
TCLU4424005

screenshot

0 голосов
/ 13 мая 2019

Заменить

.*?([A-Z]{4}\d{7})

от

$1\n

и получите

SUDU8505087
UACU5363691
TGHU9702812
HLXU6240079
HASU4556735
SUDU6787839
TGHU9861619
HASU5014810
CLHU4693498
TCLU4424005
+42G1+++5'NAD+CA+HLC:172:20'LOC+147+0301382::5'MEA+WT++KGM:29183'LOC+9+BRSSA:139:6+TECSV'LOC+11+COCTG:139:6+TCC'LOC+83+COCTG:139:6'RFF+BM:1'EQD+CN+...

Затем удалите последнюю строку вручную.

screenshot

...