Попытка сопоставить шаблон регулярного выражения в тексте всегда возвращает None Python - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть регулярное выражение, определенное в 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)

Нет проблем в регулярном выражении.Он отлично работает Регулярное выражение

Я программист на Java и совершенно новичок в программировании на Python.Что я тут не так делаю?

1 Ответ

2 голосов
/ 26 апреля 2019

Вам необходимо использовать многострочный флаг:

pattern = re.compile(r"^filter\s*\{[\w\W]+?\n\}$", re.MULTILINE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...