尝试匹配文本中的正则表达式模式始终返回None Python

时间:2019-04-26 10:00:44

标签: python regex

我在python中定义了一个正则表达式,我正尝试使用python提取匹配的文本。但是它总是返回None。

这是配置文件文本,定义为myConf.conf

input {
  name: "abc",
  age: "20"
}

filter {
  name: "pqr",
  age: "25"

if [message] =~ "TRANSACTION:request" {
    grok {
      match => { "message" => "\[%{TIMESTAMP_ISO8601:timestamp}]  %{LOGLEVEL:level} \{% {DATA:logtype}}
        }

        map['method'] = event.get('method')
        map['request'] = event.get('body')
    }

    drop {}

    aggregate {                
        task_id => "%{tid}"
    }
}

output {
  stdout{}
}

这是我的python代码。它从myConf.conf文件中读取数据,并尝试匹配定义的正则表达式

import re

path = "./myConf.conf"
file = open(path, "r+")
text_val = str(file.read())

pattern = re.compile(r"^filter\s*\{[\w\W]+?\n\}$")
result = pattern.search(text_val)
print(result)

正则表达式中没有问题。工作正常 Working regex

我是Java程序员,并且是python编程的新手。我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

您需要使用多行标志:

pattern = re.compile(r"^filter\s*\{[\w\W]+?\n\}$", re.MULTILINE)