基于regex:python拆分文件内容

基于regex:python拆分文件内容,python,regex,list,split,Python,Regex,List,Split,我想将每个规则(规则1、规则2、规则3)保存在一个列表中。示例文件: 我正在使用以下代码 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{ me

我想将每个规则(规则1、规则2、规则3)保存在一个列表中。示例文件: 我正在使用以下代码

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


}
----文件结束---- 预期产出

规则中可以有“规则字符串”。因此,应将一条规则确定为 规则规则名称{**内容可以是任何内容,包括新行词和任何字符串。规则内容将受到大括号的限制。我应该能够将规则提取到列表中。规则[0]应包含规则1及其内容。规则2也是如此

  • 您的模式不匹配,因为输入中启动
    {
    的内容后面紧跟着
    \n
    ,而没有
    re.DOTALL的
    \n
    不匹配
  • \s*[\n]*
    中,
    [\n]*
    无效,因为
    \s
    已经匹配了
    \n
  • 由于还希望返回规则名称,因此不必将其包含在拆分模式中
  • 所以


    应该这样做(
    [1://code>在第一条
    规则
    之前丢弃零件)。

    此问题不清楚,请添加您期望的输出。
    results=re.split(r'\s*[\n]*rule.*[\n]*\s*.*{.', buf)
    
    results = re.split(r'\brule\s+', buf)[1:]