Ошибка соответствия RE в python, путайте результат с regex101

http://regex101.com/r/oU6eI5/1 , проверьте, работает ли шов, но когда я положил Python, сравните всю строку.

str = galley/files/tew/tewt/tweqt/ re.sub('^.+/+([^/]+/$)', "\1", str) 

я хочу получить "tweqt /"

  • Вызов / выбор переменных (float value) с использованием пользовательского ввода в Python
  • Невозможно определить функциональность move_to_element для веб-сервера python selenium
  • `staticmethod` и` abc.abstractmethod`: Будет ли это сочетаться?
  • Замена Python 3 для устаревшей функции compiler.ast flatten
  • Разрешение тэгов с Google App Engine и Jinja2
  • Повторная сборка байт-кода Python с исходным кодом?
  • Для чего __init__.py?
  • Тензорный поток: использование оптимизатора Адама
  • 2 Solutions collect form web for “Ошибка соответствия RE в python, путайте результат с regex101”

    Было бы лучше, если бы вы определяли шаблон или регулярное выражение как необработанную строку.

     >>> import re >>> s = "galley/files/tew/tewt/tweqt/" >>> m = re.sub(r'^.+/+([^/]+/$)', r'\1', s) ^ ^ >>> m 'tweqt/' 

    Вам нужно использовать необработанную строку в replace:

     str = galley/files/tew/tewt/tweqt/ re.sub('^.+/+([^/]+/$)', r"\1", str) # ^ 

    В противном случае вы получите escape-символ \1 . Например, на моей консоли это немного смайлик.

    Если вы каким-то образом не захотите сырой строки, вам придется скрывать обратную косую черту:

     re.sub('^.+/+([^/]+/$)', "\\1", str) 

    Также стоит отметить, что это хорошая практика для сырой строки регулярных выражений и использования согласованных котировок, поэтому я бы посоветовал использовать:

     re.sub(r'^.+/+([^/]+/$)', r'\1', str) 

    Другие примечания

    Это может быть проще сопоставить (используя re.search ) вместо использования re.sub :

     re.search(r'[^/]+/$', str).group() # => tweqt/ 

    И вы можете использовать другое имя переменной, отличное от str потому что это переопределит существующую функцию str() .

    Python - лучший язык программирования в мире.