Соответствие позиции запроса выражения регулярного выражения - PullRequest
0 голосов
/ 02 октября 2018

Я пытаюсь сопоставить строку с выражением регулярного выражения ниже.В 11-м семестре я хотел бы, чтобы 11-й символ был таким же, как у 1-го символа, а 12-й символ был таким же, как у 2-го символа в Python 3. Я пробовал \ 1 \ 2, как указано на hackerrank, нопри запуске кода выдается ошибка.

  strcom = 'ab #1?AZa$ab #1?AZa$'
  match = re.findall(r'[a-z]\w\s\W\d\D[A-Z][a-zA-Z][aeiouAEIOU]\S\1\2',strcom)

1 Ответ

0 голосов
/ 02 октября 2018

Вам нужно добавить группы захвата как Оньямбу предлагает , но чтобы получить совпадение, вы должны использовать re.finditer (если вы ожидаете несколько совпадений)или re.search для поиска одного совпадения (или re.match, если вы ожидаете только одно совпадение в начале строки).

import re
strcom = 'ab #1?AZa$ab #1?AZa$'
for m in re.finditer(r'([a-z])(\w)\s\W\d\D[A-Z][a-zA-Z][aeiouAEIOU]\S\1\2', strcom):
    print(m.group())

# => ab #1?AZa$ab

См. Демонстрационную версию Python

Проблема с re.findall заключается в том, что она будет возвращать захваченные подстроки, только если в шаблоне определены группы захвата.

...