我希望你不介意回答有关正则表达式的问题:
我想在同一个文件中查找并从一个地方移动到另一个地方。这将同时适用于数百个文件。
示例查看以下文本: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之后。是否有正则表达式允许这样做?非常感谢你。
答案 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]