基于regex:python拆分文件内容

2024-05-23 17:15:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把每个规则(规则1、规则2、规则3)都放在一个列表中。示例文件:https://github.com/Yara-Rules/rules/blob/master/malware/APT_WildNeutron.yar 我正在使用以下代码

patt=re.compile("\s*[\n]*rule.*[\n]*\s*.*{")

results=re.split(r'\s*[\n]*rule.*[\n]*\s*.*{.', buf) 

结果不包含列表。但是看来拆分不起作用。 有人能帮忙吗?你知道吗

------------文件内容--------

rule rule1{

meta: 

 desc-test1


}

rule rule2{

meta: 

desc-test2


}

rule rule3{

meta: 

desc-test3


}

----文件结束----------预期产量

规则中可以有“规则字符串”。所以一个规则应该被确定为 规则ruleName{**content可以是任何内容,包括新行单词和任何字符串。规则内容将受到大括号的限制。我应该可以把规则提取到列表中。规则[0]应包含规则1及其内容。规则2也是如此。你知道吗


Tags: 文件字符串httpsregithubcom示例内容
1条回答
网友
1楼 · 发布于 2024-05-23 17:15:31
results=re.split(r'\s*[\n]*rule.*[\n]*\s*.*{.', buf)
  1. 您的模式不匹配,因为输入中启动{的内容后面紧跟着\n,没有re.DOTALL.\n不匹配。你知道吗
  2. \s*[\n]*中,[\n]*是无用的,因为\s已经匹配了\n。你知道吗
  3. 因为您希望还返回规则名称,所以不必将其包含在分割模式中。你知道吗

所以

results = re.split(r'\brule\s+', buf)[1:]

should do([1:]丢弃第一个rule之前的部分)。你知道吗

相关问题 更多 >