Python Regex, re.sub, заменяющий несколько частей шаблона? - PullRequest
18 голосов
/ 19 августа 2010

Я не могу найти хороший ресурс по этому вопросу .. Я пытаюсь сделать простую замену.

Я хочу заменить часть, где его (. *?), Но могу 'Не могу понять синтаксис, как это сделать. Я знаю, как это сделать в PHP, поэтому я возился с тем, что, по моему мнению, может быть основано на этом (вот почему у него есть 1 доллар, но я знаю, чтоне правильно в Python) .. Я был бы признателен, если кто-то может показать правильный синтаксис, я не спрашиваю конкретику для какой-либо определенной строки, просто, как я могу заменить что-то вроде этого, или если бы он имел более 1 ().. спасибо

originalstring = 'fksf var:asfkj;'
pattern = '.*?var:(.*?);'
replacement_string='$1' + 'test'
replaced = re.sub(re.compile(pattern, re.MULTILINE), replacement_string, originalstring)

Ответы [ 3 ]

18 голосов
/ 19 августа 2010
>>> import re
>>> originalstring = 'fksf var:asfkj;'
>>> pattern = '.*?var:(.*?);'
>>> pattern_obj = re.compile(pattern, re.MULTILINE)
>>> replacement_string="\\1" + 'test'
>>> pattern_obj.sub(replacement_string, originalstring)
'asfkjtest'

Редактировать: Документы Python могут быть довольно полезными ссылками.

7 голосов
/ 19 августа 2010
>>> import re
>>> regex = re.compile(r".*?var:(.*?);")
>>> regex.sub(r"\1test", "fksf var:asfkj;")
'asfkjtest'
0 голосов
/ 19 августа 2010

Документы на Python находятся в сети, а один для модуля re здесь. http://docs.python.org/library/re.html

Чтобы ответить на ваш вопрос, Python использует \ 1, а не $ 1 для ссылки на совпадающие группы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...