正则表达式查找和移动

时间:2018-05-28 14:57:45

标签: regex find move

我希望你不介意回答有关正则表达式的问题: 我想在同一个文件中查找并从一个地方移动到另一个地方。这将同时适用于数百个文件。 示例查看以下文本:Cat1[changing text]Cat2并在Dog1[changing text]Dog2

之后移动

原始档案:

Cat1[variable text]Cat2 [variable text]
Dog1[variable text]Dog2 [variable text]
Cow1[variable text]Cow2 [variable text]

期望的结果:

  [variable text]
Dog1[variable text]Dog2Cat1[variable text]Cat2  [variable text]
Cow1[variable text]Cow2  [variable text]

换句话说,我正试图将Cat1和Cat2之间的所有内容移动到同一文件中的不同位置。这种情况下的新位置紧跟在Dog1 ... Dog2之后。是否有正则表达式允许这样做?非常感谢你。

1 个答案:

答案 0 :(得分:0)

在Python中,您可以使用re.sub和匹配组移动匹配的模式。函数re.sub将使用相应的匹配组替换反向引用,例如\1

import re

text = """Cat1[text1]Cat2[text2]
Dog1[text3]Dog2[text4]"""


new_text = re.sub(
    r'(Cat1.*?Cat2)(.*?)(Dog1.*?Dog2)',
    r'\2\1\3',
    text,
    flags=re.DOTALL)

print(new_text)
# prints:
# [text2]
# Cat1[text1]Cat2Dog1[text3]Dog2[text4]