我有一个类似于下面的文本文件
<Start
1;
b;
c;
d;
<End
<Start
2;
b;
c;
d;
<End
<Start
1;
b;
c;
d;
<End
基本上,该文本文件由3组组成,每组以<以<终止我只想用";1〃;只有预期数据如下:
<Start
1;
b;
c;
d;
<End
<Start
1;
b;
c;
d;
<End
我正试图通过Python-Regex找到一种方法来实现这一点,但到目前为止还找不到任何方法。如果我能得到这个社区的帮助,我将不胜感激。提前感谢
使用此正则表达式(<Start[s]*1;[sa-z;]*<End)
它将捕获与(
和)
之间的模式匹配的所有字符串
- 字符串以
<Start
开头 - 然后可以有任何
*
空白[s]
- 然后应该有字符串
1;
- 然后我们可以有空格
s
、分号;
或小写字母a-z
- 最终以
<End
结束
在这里试试
另一种模式是("regex_input.txt"是一个完全包含您的输入的文件(:
import re
# This simply loads your content
content = None
with open("regex_input.txt", "r") as f:
content = "n".join([line.strip() for line in f])
# The re.DOTALL option allows to capture newlines as well
pattern = re.compile("<Start[^<]*?1;.*?<End", re.DOTALL)
print(pattern.findall(content))
输出:
['<Startn1;nb;nc;nd;n<End', '<Startn1;nb;nc;nd;n<End']