OCR и извлечение текста, который следует за указанной c подстрокой - регулярное выражение с использованием Python - PullRequest
1 голос
/ 24 апреля 2020

Я довольно новичок в Regex, и поэтому я уверен, что упускаю что-то очевидное, но мне нужна помощь со следующей проблемой.

Я хочу извлечь следующие строки из конкретная c подстрока. Я работаю со списком отсканированных документов, и у меня есть следующая строка примера, и я хочу извлечь все после "FORENAME"

Это то, что я сделал до сих пор:

regex = r"(?<=(FORE))[A-Z]+"

test_str = 'UNIQUE NUMBER 12345 678910 11 FROM THIS DOCUMENT | . ISSUED ON 2011-04-04 FORENAME GUIDO    \\ SURNAME VAN ROSSUM.   '

matches = re.finditer(regex, test_str)

for matchNum, match in enumerate(matches, start=1):

    print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group()))

    for groupNum in range(0, len(match.groups())):
        groupNum = groupNum + 1

        print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum)))

Что возвращает следующее:

 Match 1 was found at 78-82: NAME
 Group 1 found at 74-78: FORE

Что я хочу вернуть:

GUIDO \ SURNAME VAN ROSSUM.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Вам не нужно регулярное выражение для такой простой задачи

test_str = 'UNIQUE NUMBER 12345 678910 11 FROM THIS DOCUMENT | . ISSUED ON 2011-04-04 FORENAME GUIDO    \\ SURNAME VAN ROSSUM.   '

pos = test_str.find("FORENAME") + len("FORENAME")

print(test_str[pos:])
0 голосов
/ 24 апреля 2020

Что я хочу вернуть:

GUIDO \ SURNAME VAN ROSSUM.

Исходя из вышеизложенного, вы можете использовать:

import re
test_str = 'UNIQUE NUMBER 12345 678910 11 FROM THIS DOCUMENT | . ISSUED ON 2011-04-04 FORENAME GUIDO    \\ SURNAME VAN ROSSUM.'
result = re.sub(r"^.*FORENAME(.*?)$", r"\1", test_str)
print(result)
#  GUIDO    \ SURNAME VAN ROSSUM.

Демо

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