我在文本文件中有一些看似'%r'%XXXX
的内容,其中XXXX
代表最后的名称。示例包括'%r'%addR
或'%r'%removeA
。我可以使用正则表达式'%r'%\w+
匹配这些模式。我希望将其替换为'{!r}'.format(XXXX)
。请注意,名称必须在替换中保持不变,因此我得到'{!r}.format(addR)
或'{!r}.format(removeA)
。有没有办法以这种方式替换匹配字符串的部分,同时保留在正则表达式搜索中用\w+
拉出的未知变量名称?
我特意在Notepad ++中使用查找和替换功能寻找解决方案。
答案 0 :(得分:2)
您可以使用
'%r'%(\w+)
并替换为'{!r}.format\(\1\)
'%r'%(\w+)
模式包含一对未转义的括号,用于创建捕获组。在替换模式中,我们使用\1
反向引用来恢复该值。
注意:替换中的(
和)
必须进行转义,否则它们将被视为Boost条件替换模式功能字符。
答案 1 :(得分:0)
搜索:
'%r'%(XXXX)
替换为:
Whatever You like \1
\1
将匹配第一组分组括号。