Как получить весь текст из начала 12-значного числа и сгруппировать его с помощью регулярных выражений - PullRequest
2 голосов
/ 30 сентября 2019

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

Например, в моем тексте ниже следует сгруппировать следующее:

011111111111 CDGH, LGF ADF: 203 HYT LOREM IPSUM / LOREM IPSUM COUNTY: GTYH CHIDGERL. IPSUM THJ. ДАТА: 21.07.2000 LOREM IPSUM DOLOT & LOREM IPSUM 768 LOREM IPSUM, 67-й LOREM IPSUM IPSUM. DTEA: NIGER, GA 12345 LOREM IPSUM DOLOT 97 LOREM IPSUM
DOLOT, KY 35678-8765

А также

0222222222222 CDGH, LGF ADF: 203 HYT LOREM IPSUM / LOREM IPSUM СТРАНА: GTYH johjk L. IPSUM THJ. ДАТА: 21.07.2000 LOREM IPSUM DOLOT & LOREM IPSUM 768 LOREM IPSUM, 67-й LOREM IPSUM IPSUM. DTEA: NIGER, GA 12345 LOREM IPSUM DOLOT 97 LOREM IPSUM
DOLOT, KY 35678-8765

Это образец всего документа

LOREM IPSUM LORIPSUM DDDDDDDDD FG SSSSS НОМЕР
106/03/2019 LOREMFG GH LOREMIPSUMF
LOREM OPFRTE ERTIO
LOREMIPS LOREMIOS 30/05/2019 DERTE TH LOREM (LWA LTD) ------------------------------------------------------------------------------------------------------------------------------------ 011111111111 CDGH, LGF ADF: 203 HYT LOREM IPSUM / LOREM IPSUM ОКРУГ: GTYH CHIDGER L. IPSUM THJ. ДАТА: 21.07.2000 LOREM IPSUM DOLOT & LOREM IPSUM 768 LOREM IPSUM, 67-й LOREM IPSUM IPSUM. DTEA:
NIGER, GA 12345 LOREM IPSUM DOLOT
97 LOREM IPSUM DOLOT, KY 35678-8765 0222222222222 CDGH, LGF ADF: 203 HYT LOREM IPSUM / LOREM IPSUM КОЛИЧЕСТВО: ГРИЙ ЛЖИTHJ. ДАТА: 21.07.2000 LOREM IPSUM DOLOT & LOREM IPSUM 768 LOREM IPSUM, 67-й LOREM IPSUM IPSUM. DTEA:
NIGER, GA 12345 LOREM IPSUM DOLOT
97 LOREM IPSUM DOLOT, KY 35678-8765 011111111111
CDGH, LGF АПД: 203 HYT LOREM IPSUM / LOREM IPSUM ЧУНГL. IPSUM THJ. ДАТА: 21.07.2000 LOREM IPSUM DOLOT & LOREM IPSUM 768 LOREM IPSUM, 67-й LOREM IPSUM IPSUM. DTEA:
NIGER, GA 12345 LOREM IPSUM DOLOT
97 LOREM IPSUM DOLOT, KY 35678-8765

Код, который я написал, выбирает только 12 цифр и пробел, но игнорирует текстмежду этим. Ссылка на regex101, которую я написал для этой цели

(\b\d{12}\s*\b[A-Za-z0-9_.]*+\s+)

1 Ответ

0 голосов
/ 30 сентября 2019

Если 12 цифр также могут быть в одной строке, вы можете использовать начало шаблона с границами слова и использовать не жадный квантификатор с положительным прогнозом.

Если значения могут занимать несколько строки может встречаться в одной и той же строке дважды, вы можете использовать [\s\S]+? вместо .+?

\b\d{12}\b.+?(?=\b\d{12}\b|$)

По частям

  • \b\d{12}\b Совпадение 12 цифр между границами слов
  • .+? Совпадение 1+ раз с любым символом, кроме новой строки, не жадной
  • (?=\b\d{12}\b|$) Положительный взгляд, утверждайте, что справа либо 12 цифр, окруженных границами слов, либо конецстрока.

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...