2014-10-16 2 views
0

Совершенно новым для регулярных выражений, и я пытаюсь получить схватывание на нихрегулярное выражение re.sub для строки форматирования в питона

string = "regex_learning.test" 
subbed = re.sub(r'(.*)_learning(.*), r'\1', string) 

То, что я надеялся на это "regex.test" как при выводе печати subbed, однако я просто получите "regex"

Может кто-нибудь объяснить, почему я теряю .test?

Заранее спасибо

ответ

1

Используйте это:

subbed = re.sub(r'(.*)_learning(.*)', r'\1' + r'\2', string) 

Вы также можете написать:

subbed = re.sub(r'(.*)_learning(.*)', "%s%s" % (r'\1', r'\2'), string) 
+0

Не могли бы вы объяснить, что происходит с + г '\ 2' там ? Это помогает, если я могу следить за тем, что говорит сценарий. – user3234810

+0

'\ 1' дает вам совпадение, захваченное с помощью первых'() ', и' \ 2' дает совпадение, полученное вторым '()'. Последний фиксирует часть '.text' вашей строки. Вы хотите, чтобы связанная строка была объединена из двух совпадений. –

+0

Thats фантастический. Спасибо! – user3234810

Смежные вопросы