我基本上需要一个程序/脚本来搜索文件以进行正则表达式匹配,然后将每个匹配保存到新创建的文本文件(即match_01.txt,match_02.txt,match_03.txt等)。注意:它必须支持多行匹配!
编辑:
这是我尝试使用Josha的帮助(thx :):
尝试此操作时出错
Python脚本:
import re
pattern = re.compile(r'(?s)(?<=Sample)(.*?)(?=EndSample)', flags=re.S)
with open('test.txt', 'r') as f:
matches = pattern.findall(f.read())
for i, match in enumerate(matches):
with open('Split/match{0:04d}.txt'.format(i), 'w') as nf:
nf.write(match)
命令提示符:
C:\Test\python test.py
Traceback (most recent call last):
File "test.py", line 31, in <module>
nf.write(match)
TypeError: expected a character buffer object
test.txt看起来像这样:
样本A1 ... ... ... ... ... EndSample
样品B4 ... ... ... ... ... EndSample
样本X6 ... ... ... ... ... EndSample
所以我需要匹配“Sample”和“EndSample”之间的所有内容(中间数百行)并将每个匹配写入自己的txt文件。 到目前为止它只有在我的正则表达式模式是ie时才有效。 “样品”。有15个匹配,它确实在Split文件夹中创建了15个txt文件,但它们都只包含单词Sample,仅此而已。 多线仍然不工作看起来像.. 如果我的正则表达式是这样的:
(αS)(样品)(。*?)
然后它也给了我与上面相同的错误。就像它不喜欢(。*?)奇怪......?
答案 0 :(得分:0)
在Python中(假设匹配不跨越行):
import re
pattern = re.compile(r'(?s)(?<=Sample)((?:.+?)?)(?=EndSample)', flags=re.S) # Your regex goes here
with open('path/to/your/file.txt', 'r') as f:
matches = pattern.findall(f.read())
for i, match in enumerate(matches):
with open('/path/to/your/match{0:04d}.txt'.format(i), 'w') as nf:
nf.write(match)