如何使用正则表达式提取字符串的一部分并将其添加到字符串的末尾?

时间:2019-01-08 11:31:56

标签: regex string text

我对正则表达式有一点问题。

我在一个文件中只有几个字符串,看起来像这样:

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.#-这只是字符串,没有正则表达式,并且无效

有什么主意吗?

2 个答案:

答案 0 :(得分:1)

  • 查找:$3.$1.#$2
  • 替换:用于Python的\3.\1.#\2COPY rest-service-1.0.jar /document-service/rest-service-1.0.jar

Demo

答案 1 :(得分:0)

您可以在替换部分中将capturing groupsbackreferences一起使用:

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符号。)