Регулярное выражение 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 

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

  • сопоставление нескольких строк в python
  • Каков наиболее эффективный способ найти одну из нескольких подстрок в Python?
  • Как заменить первое вхождение регулярного выражения в Python?
  • Разделение вывода ps с помощью Python
  • Perl Compatible Regular Expression (PCRE) в Python
  • Несколько URL-адресов с регулярным выражением
  • Python \ ufffd после замены китайским контентом
  • Список всех шаблонов, которые соответствует регулярному выражению
  • Python - лучший язык программирования в мире.