Я витягую числа в такому форматі рядка.
- 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)