Регулярное выражение Python: почему это не работает?

Это не дает мне ошибки и ответа.

re.sub('\\.(\\W|\\.)*[o0](\\W|[o0])*', '*', '..........................................') 

Почему он ведет себя так? Кроме того, если я уменьшу количество «периодов», то он будет работать.

Спасибо.

2 Solutions collect form web for “Регулярное выражение Python: почему это не работает?”

У вас катастрофический откат .

У вас нет o или 0 во входной строке, но для вашего регулярного выражения требуется хотя бы один из этих символов ( [o0] ).

 >>> re.compile('\\.(\\W|\\.)*[o0](\\W|[o0])*', re.DEBUG) literal 46 max_repeat 0 65535 subpattern 1 branch in category category_not_word or literal 46 in literal 111 literal 48 max_repeat 0 65535 subpattern 2 branch in category category_not_word or in literal 111 literal 48 

Обновление: ваше регулярное выражение страдает от катастрофического отступления ; избегайте комбинации вложенных символов-классов или символов в группе с подстановочным знаком ( branch .. or части внутри max_repeat перечисленные выше). Вы можете поместить классы символов внутри набора символов, чтобы избежать этого.

Также обратите внимание, что вы можете использовать обозначение r'' raw string, чтобы избежать всех сбрасываемых обратных косых черт.

Следующие работы:

 re.sub(r'\.[\W\.]*[o0][\Wo0]*', '*', '..........................................') 

потому что он компилируется:

 >>> re.compile(r'\.[\W\.]*[o0][\Wo0]*', re.DEBUG) literal 46 max_repeat 0 65535 in category category_not_word literal 46 in literal 111 literal 48 max_repeat 0 65535 in category category_not_word literal 111 literal 48 

Обратите внимание, что теперь ветки исчезли.

  • Как отделить выходные данные
  • Регулярное выражение с unicode и str
  • Удаление непечатаемых символов «gremlin» из текстовых файлов
  • Как я могу гарантировать, что мое регулярное выражение Python выводит словарь?
  • Python beautifulsoup пытается удалить html-теги 'span'
  • Различное поведение одного и того же регулярного выражения в Python и Java
  • Регулярное выражение для соответствия началу имени файла и расширению имени файла.
  • Невозможный lookbehind с обратной рецензией
  • Python - лучший язык программирования в мире.