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

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

  • Есть ли более быстрый способ очистки управляющих символов в файле?
  • Pandas Чтение CSV с разделителями строк с помощью регулярных выражений
  • Как обнаружить идентичную часть (-ы) внутри строки?
  • Группы в регулярных выражениях
  • TypeError: элемент последовательности 1: ожидается байтоподобный объект, str найден
  • Как сделать sed, как текст, заменить на python?
  • Регулярное выражение Python: включение пробела внутри диапазона символов
  • Django url pattern - строковый параметр
  • Выполните проверку WebDriverWait () или аналогичную проверку регулярного выражения в Python
  • Эффективное соответствие нескольким регулярным выражениям в Python
  • Библиотека, чтобы проверить, равны / изоморфны два регулярных выражения
  • Python - лучший язык программирования в мире.