Как заменить совпадающие строки из регулярного выражения на те измененные совпадающие строки? - PullRequest
0 голосов
/ 18 января 2019

Давайте возьмем пример из здесь .

#!/usr/bin/python
import re

phone = "2004-959-559 # This is Phone Number"

# Delete Python-style comments
num = re.sub(r'#.*$', "", phone)
print "Phone Num : ", num

Здесь, допустим, что вместо удаления комментариев я просто хочу заменить эти комментарии измененным сопоставленным текстом.Например, заменив комментарии в стиле Python комментариями в стиле C, чтобы # This is Phone Number стало /* This is a Phone Number */.Как бы я это сделал?

Ответы [ 2 ]

0 голосов
/ 18 января 2019

На основании вашего комментария, str.replace должен работать для вас:

>>>
>>> str1 = "# This is a Phone Number"
>>> str2 = str1.replace("#", "/*") + " */"
>>>
>>> str2
'/* This is a Phone Number */'
>>>
0 голосов
/ 18 января 2019

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

>>> phone = "2004-959-559 # This is Phone Number"
>>> print re.sub(r'#(.*)$', r'/* \1 */', phone)
2004-959-559 /*  This is Phone Number */
  • (.*) захватывает строку после # в первой группе захвата.
  • \1 является обратной ссылкой 1-й группы захвата в соответствующем регулярном выражении в re.sub.
  • Вы должны использовать необработанный строковый режим вместо того, чтобы правильно интерпретировать \1.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...