我有一个字符串:'testing: '
,并想用' "testing:" '
替换它。
换句话说,请在字符串内的单词周围添加引号
我尝试使用
re.sub('[a-zA-Z]+:', '"${name}"',word)
但这只是将其替换为{name}
答案 0 :(得分:2)
您的原始表达式很好,我们只需在其周围添加一个捕获组,
([A-Za-z]+:)
# coding=utf8
# the above tag defines encoding for this document and is for Python 2.x compatibility
import re
regex = r"([A-Za-z]+:)"
test_str = "testing:"
subst = "\"\\1\""
# You can manually specify the number of replacements by changing the 4th argument
result = re.sub(regex, subst, test_str, 0, re.MULTILINE)
if result:
print (result)
# Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.
"testing:"
result = re.sub(pattern, repl, string, count=0, flags=0);
result = re.sub('abc', '', input) # Delete pattern abc
result = re.sub('abc', 'def', input) # Replace pattern abc -> def
result = re.sub(r'\s+', ' ', input) # Eliminate duplicate whitespaces
result = re.sub('abc(def)ghi', r'\1', input) # Replace a string with a part of itself
jex.im可视化正则表达式:
答案 1 :(得分:2)
您可以使用\g<0>
backreference来指代整个比赛:
后向引用
\g<0>
替换RE匹配的整个子字符串。
代码:
word = re.sub(r'[a-zA-Z]+:', r'"\g<0>"', word)
请参见Python demo
import re
word = 'testing: '
word = re.sub(r'[a-zA-Z]+:', r'"\g<0>"',word)
print(word) # => "testing:"