Регулярное выражение для строки содержит все символы в заглавном питоне - PullRequest
0 голосов
/ 24 января 2019

Я извлекаю текстовый абзац, за которым следует текст, такой как «НАБЛЮДЕНИЕ № 1» или «НАБЛЮДЕНИЕ № 2» в выводе из библиотеки, например PyPDF2.
Однако может быть какая-то ошибка, поэтому она может быть похожа на «НАБЛЮДЕНИЕ № 2», и я должен избегать, как «Люкс № 300», поэтому правило будет «ЕСЛИ ХАРАКТЕР, то БУДЕТ В КАПИТАЛЕ».
В настоящее время фрагмент кода Python, как

inspection_observation=pdfFile.getPage(z).extractText()
                if 'OBSERVATION' in inspection_observation:
                    for finding in re.findall(r"[OBSERVATION] #\d+(.*?) OBSERVA'TION #\d?", inspection_observation, re.DOTALL):

                    #print inspection_observation;
                        print finding; 

Пожалуйста, сообщите соответствующее регулярное выражение для этого экземпляра,

1 Ответ

0 голосов
/ 24 января 2019

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

Затем вы можете захватить содержимое между этими заглавными словами и использовать положительный прогноз, чтобы проверить, является ли следующее другое заглавное слово, за которым следуют # и цифры 1+ или конец строки. Это регулярное выражение использует re.DOTALL, где точка соответствует новой строке.

(?=[A-Z']*[A-Z])[A-Z']+\s+#\d+(.*?(?=[A-Z']*[A-Z][A-Z']*\s+#\d+|$))

Объяснение

  • (?=[A-Z']*[A-Z]) Позитивный взгляд на утверждение, которое следует по крайней мере после символа A-Z, где ' может произойти до
  • [A-Z']+\s+#\d+ соответствует 1+ раз A-Z или ', 1+ пробельных символов и 1+ цифр
  • ( Группа захвата
    • .*? Соответствует любому персонажу
    • (?= Позитивный взгляд на будущее
      • [A-Z']*[A-Z][A-Z']* Соответствует символу A-Z в верхнем регистре, где ' может быть до и после
      • \s+#\d+ Совпадение с 1+ пробелами, цифрами # и 1+ или концом строки
    • ) Закрыть группу без захвата
  • ) Закрыть группу захвата

Regex demo

...