У меня есть следующая строка, извлеченная из файла PDF, и я хотел бы получить из него номер «класса управления» из девяти цифр:
string = ‘(some text before)Process ID: JD7717PO CONTROL CLASS706345519,708393673, 706855190 CODE AAZ-1585 ZZF-8017. Sector: Name:MULTIBANK S.A. SAAT: 54177846900115Date of Production2019/12/20\x02.02.037SBPEAA201874249B\x0c(some text after)’
Я хочу, чтобы все совпадения встречались перед словом « Сектор », иначе у меня будут нежелательные матчи. Я использую модуль «re», в Python 3.8.
Я пытался использовать отрицательный вид сзади следующим образом:
(?<!Sector:)\d{9})
Однако это не сработало. У меня все еще были совпадения типа «54177846» и «201874249», которые идут после слова «Сектор».
Я также пытался «изолировать» область поиска между словами «Идентификатор процесса» и «Сектор» :
(Process ID:.*?)(\d{9})(.*Sector)
Я также пытался найти выражение \ d9 только до слова «Сектор», но оно не дало результатов.
Я должен был найти решение в два этапа: (1) я создал регулярное выражение, которое бы находило все результаты вплоть до слова «Сектор» (desperate_regex = ‘(.*)Sector)’ and assigned it to a new variable,
partal_text`; (2) я тогда выполнил поиск требуемого регулярного выражения ('\ d {9}') в новой переменной.
Мой код работает, но не удовлетворяет меня. Как мне найти свои совпадения с помощью одного поиска регулярных выражений? обратите внимание, что первый номер «класса управления» усекается с текстом, который стоит перед ним («CONTROL CLASS706345519»).
(PS: я совершенно новичок ie, и это мой первый пост Я надеюсь, что смогу объяснить себя. Спасибо!)