Size: a a a

Regular Expressions

2021 January 14

СД

Стас Донцов... in Regular Expressions
а, я думал что дефайн и именованная группа одно и то же
источник

СД

Стас Донцов... in Regular Expressions
тогда не понимаю разницы
источник

OM

Oleg Makarikhin in Regular Expressions
у елк, там https://github.com/kkos/oniguruma/blob/master/doc/RE такой синтаксис
источник

OM

Oleg Makarikhin in Regular Expressions
(?<name>subexp), (?'name'subexp)
источник

СД

Стас Донцов... in Regular Expressions
а ну кажется стал понимать: он просто делает именнованные группы и потом ты говоришь какую группу попытаться найти в тексте
источник

СД

Стас Донцов... in Regular Expressions
но это чет не то
источник

СД

Стас Донцов... in Regular Expressions
но тоже инетересное решение
источник

OM

Oleg Makarikhin in Regular Expressions
я чесно говоря ниразу не использовал их, в своих задачах.
но иногда бывают потребность какую-то штуку много раз перерасписывать, например какой-то алфавит или хитрая комбинация из (списка|условий) который занимает много места или усложняет понимание
а (?(define),(?'name'...)) это как раз позволяет дать этому субпатернту имя и следовать Dont Repeat Yourself
источник

СД

Стас Донцов... in Regular Expressions
понял, но пока это далеко от мысли сделать 3 переменных с мини-регулярками, и потом объединить их в 4 переменой в одну большую регулярку в стиле:

p1 = ... # паттерн пользователя
p2 = ... # паттерн computer
p3 = ... # паттерн субъекта

pattern_total = re.compile(" User {2} at computer {1} remove {0}".format('p1, 'p2', 'p3'))
источник

OM

Oleg Makarikhin in Regular Expressions
кстати, под python тоже есть либа с гроком
источник

СД

Стас Донцов... in Regular Expressions
и тогда можно будет просто группы вытаскивать, каждый раз не парся строку
источник

СД

Стас Донцов... in Regular Expressions
я вообще хз почему еще не сделали yaml с регуляркой для "вот именно этого сообщения"
источник

СД

Стас Донцов... in Regular Expressions
определил в yaml суб-паттерны, указал как они лежат в основном паттерне и скормил это в парсер
источник

СД

Стас Донцов... in Regular Expressions
загрузил так 100500 ямлов, и поехал парсить
источник

СД

Стас Донцов... in Regular Expressions
но это применимо только к лог сообщениям
источник

СД

Стас Донцов... in Regular Expressions
тот же грок на эластике делает ведь такую штуку
источник

СД

Стас Донцов... in Regular Expressions
но чет там вообще тухло - нет базы нормальной где хранились бы мини конфиги на каждое сообщение
источник

DE

Denis Efremov in Regular Expressions
Стас Донцов
а, я думал что дефайн и именованная группа одно и то же
Не, есть именованный матч, а есть именованный паттерн
источник

DE

Denis Efremov in Regular Expressions
Использовать (?P>name)
источник

OM

Oleg Makarikhin in Regular Expressions
Стас Донцов
определил в yaml суб-паттерны, указал как они лежат в основном паттерне и скормил это в парсер
ну обычно ожидаешь у строчки какие-то паттерны, их и перечисляешь в грок-плагине.
Logstash ships with about 120 patterns by default. You can find them here: https://github.com/logstash-plugins/logstash-patterns-core/tree/master/patterns. You can add your own trivially. (See the patterns_dir setting)

если нужно - добавляешь свои, к ним, или в конфиге плагина кастомно можно прописать 1-2 своих
источник