/ / Python regex number, дивлячись назад - python, regex

Число регулярних виразів Python, дивлячись назад - python, regex

Я витягую числа в такому форматі рядка.

  • AB1234
  • AC1234
  • AD1234

Як бачиш, A завжди є, і другий штам виключає ". Я пишу нижче код, щоб витягти номер.

re.search(r"(?<=A[^"])d*",input)

Але я зіткнувся з помилкою.

Для огляду потрібна фігурна ширина шаблону

Чи існує який-небудь зручний спосіб отримати номери? Тепер я знаю, як шукати двічі, щоб отримати їх. Дякую заздалегідь.

Примітка A є шаблоном, насправді A - це світ у довгій струни.

Відповіді:

3 для відповіді № 1

Регулярний вираз у вашому прикладі працює, так що я гадаю, що ваш фактичний шаблон має відповідні символьні перемінні ширини (*, +і т. д.). На жаль, регулярні висловлювання виглядають позаду, але ті не підтримують. Те, що я можу запропонувати як альтернативу, полягає в тому, щоб використовувати групу захоплення та витягувати відповідний рядок -

m = re.search(r"AD+(d+)", s)
if m:
r = m.group(1)

Подробиці

A      # your word
D+    # anything that is not a digit
(      # capture group
d+    # 1 or more digits
)

Якщо ви хочете подбати про двійні лапки, ви можете зробити невелику зміну регулярного виразу, включивши клас символів -

r"A[^d"]+(d+)"

0 для відповіді № 2

Замість цього використовуйте цей регулярний вираз:

re.search(r"(?=A[^"]d*)d*",input)