我在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编程的新手。我在这里做错了什么?
答案 0 :(得分:2)
您需要使用多行标志:
pattern = re.compile(r"^filter\s*\{[\w\W]+?\n\}$", re.MULTILINE)