我对正则表达式有一点问题。
我在一个文件中只有几个字符串,看起来像这样:
TEST.SYSCOP01.D%%ODATE
TEST.SYSCOP02.D%%ODATE
TEST.SYSCOP03.D%%ODATE
...
我需要定义正确的正则表达式并更改以下字符串的名称:
TEST.D%%ODATE.SYSCOP.#01
TEST.D%%ODATE.SYSCOP.#02
TEST.D%%ODATE.SYSCOP.#03
实际上,我得到了正则表达式:
r".SYSCOP[0-9]{2}.D%%ODATE"
-用于在文件中查找
但是正则表达式应该如何变化?我需要在字符串中输入新的字符串名称,并输入新的字符串名称。
.D%%ODATE.SYSCOP.#
-这只是字符串,没有正则表达式,并且无效
有什么主意吗?
答案 0 :(得分:1)
$3.$1.#$2
\3.\1.#\2
或COPY rest-service-1.0.jar /document-service/rest-service-1.0.jar
答案 1 :(得分:0)
您可以在替换部分中将capturing groups与backreferences一起使用:
s = re.sub(r'(\.SYSCOP)([0-9]{2})(\.D%%ODATE)', r'\3\1.#\2', s)
请参见regex demo
替换模式中的每个\X
都指向该模式中的第N个括号,因此,您可以根据需要重新排列匹配值。
请注意,.
必须转义以匹配文字点。
请注意原始字符串文字,在字符串文字之前的r
前缀可帮助您避免过多的反斜杠。 '\3\1.#\2'
与r'\3\1.#\2'
不同,您可以print
字符串文字并亲自查看。简而言之,在原始字符串文字中,无法识别诸如\a
,\f
,\n
或\r
之类的字符串转义序列,反斜杠被视为文字反斜杠,只是用于构建 regex 转义序列的代码(请注意r'\n'
和'\n'
都与换行符匹配,因为第一个是与换行符匹配的正则表达式转义序列,第二个是是文字LF符号。)