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

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

account number,
account no,
a/c no

Я вставлю пример текста, содержащего эту информацию.

Образец 1:

"bank of india  account statement name abcd account no. 123456 account type savings account"

Образец 2:

"statement for a/c no 11111111 between 16-09-2019 and 16-03-2020"

Образец 3:

"shyam alaspure<br />
period<br />
01-12-2019 to 29-02-2020<br />
cust.reln.no<br />
XXXXXXXX<br />
account no<br />
9XXX99999"<br />

Я использовал следующее регулярное выражение

'account no.\s*([^.]+|\S+)'

но вывод дает весь текст после номера счета.

Пожалуйста, помогите мне найти решение.


person Shyam    schedule 01.09.2020    source источник
comment
Получил ответ, регулярное выражение должно быть r'account no.\s+((?:\w+(?:|$)){1})'   -  person Shyam    schedule 01.09.2020
comment
Итак, у вас есть account no.\s+(\w+). Но похоже, что это соответствует только первому входу.   -  person Wiktor Stribiżew    schedule 01.09.2020


Ответы (2)


Обратите внимание, что

  • (?:|$) всегда соответствует пустой строке, этот шаблон является избыточным
  • {1} всегда избыточен, никогда не используйте его в написанных вручную регулярных выражениях.
  • ., используемый вне классов символов, соответствует любому символу, кроме символа разрыва строки, всегда экранируйте его, \., чтобы соответствовать буквальному символу. [.] также соответствует буквальной точке.

Вы можете использовать

r'\b(?:a/c|account) no\.?\s+(\w+)'

См. демонстрацию регулярного выражения.

Подробнее

  • \b - граница слова
  • (?:a/c|account) - либо a/c, либо account
  • no.? - пробел, no, необязательная точка
  • \s+ - 1+ пробелов
  • (\w+) - Группа 1: одна или несколько букв, цифр или знаков подчеркивания
person Wiktor Stribiżew    schedule 01.09.2020
comment
Большое спасибо, до этого я сохранял шаблоны в списке и применял к тексту. - person Shyam; 02.09.2020

Пожалуйста, используйте регулярное выражение ниже

(?i)(?:a\/c|account)\s*no\.?\s+(\w+)

посмотрите, как это работает здесь

person Arslan Talib    schedule 01.09.2020
comment
Это мое предложение регулярного выражения, не нужно копировать. - person Wiktor Stribiżew; 02.09.2020