Regex 正则表达式查找和移动
我希望您不介意回答一个关于正则表达式的问题: 我想在同一个文件中查找并从一个地方移动到另一个地方。这将同时应用于数百个文件。 从以下文本中查找示例:Regex 正则表达式查找和移动,regex,find,move,Regex,Find,Move,我希望您不介意回答一个关于正则表达式的问题: 我想在同一个文件中查找并从一个地方移动到另一个地方。这将同时应用于数百个文件。 从以下文本中查找示例:Cat1[更改文本]Cat2并在Dog1[更改文本]Dog2 原始文件: Cat1[variable text]Cat2 [variable text] Dog1[variable text]Dog2 [variable text] Cow1[variable text]Cow2 [variable text] 预期结果: [variable
Cat1[更改文本]Cat2
并在Dog1[更改文本]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之后。是否有一个正则表达式允许这样做?非常感谢。在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]
[改变文本]的模式是什么,我们能期望在那里有什么?Cat1[某物]Cat2[某物]或在不同的时间它可能是Cat1[绿色蓝色]Cat2[橙色黄色]请提供输入输出的实际示例每当它说变量文本时,它意味着它是出现在两个单词(Cat1…Cat2)内的字母数字文本,而且它因文件而异。唯一不变的标记是Cat1。。。第二类。换言之,Cat1(.*)Cat2。谢谢您的精确性,这很有帮助。尽管如此,请提供输入和输出的实际示例Hank you Olivier的代码。这是Python的吗?@user2828890哦,对不起,我以为你添加了Python标记。是的,对你合适吗?我用的是Emeditor。但是我可以安装Python,如果它能完成这项工作的话。@user2828890 Python是一种处理字符串的可靠语言,而且它的regexp库有很好的文档记录,所以它肯定是一个有效的解决方案。太好了!我刚下载的。我知道我可以花几个小时学习如何开始使用Python,我会这样做。。。但是你能给我一点指导吗。例如,我刚刚下载了Python3.6。现在打开它,我得到一个带有>>>的命令提示符。等我进去。我如何让它处理您之前发送给我的代码?非常感谢。