All Projects → mizisu → DotGrok

mizisu / DotGrok

Licence: MIT license
Parse text with pattern. Inspired by grok filter.

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to DotGrok

Master Plan
Project Management for Hackers
Stars: ✭ 121 (+365.38%)
Mutual labels:  parsing, text
extract-emails
Extract emails from a given website
Stars: ✭ 58 (+123.08%)
Mutual labels:  parsing, parsing-library
parson
Yet another PEG parser combinator library and DSL
Stars: ✭ 52 (+100%)
Mutual labels:  parsing, parsing-library
pe
Fastest general-purpose parsing library for Python with a familiar API
Stars: ✭ 21 (-19.23%)
Mutual labels:  parsing, parsing-library
allot
Parse placeholder and wildcard text commands
Stars: ✭ 51 (+96.15%)
Mutual labels:  parsing, text
GreynirPackage
The Greynir NLP parser for Icelandic, packaged for PyPI
Stars: ✭ 49 (+88.46%)
Mutual labels:  parsing, parsing-library
FAParser
JSON Parsing + Archiving & Unarchiving in User Defaults
Stars: ✭ 67 (+157.69%)
Mutual labels:  parsing, parsing-library
Nearley
📜🔜🌲 Simple, fast, powerful parser toolkit for JavaScript.
Stars: ✭ 3,089 (+11780.77%)
Mutual labels:  parsing, parsing-library
Parjs
JavaScript parser-combinator library
Stars: ✭ 145 (+457.69%)
Mutual labels:  parsing, text
Dissect.cstruct
A no-nonsense c-like structure parsing library for Python
Stars: ✭ 215 (+726.92%)
Mutual labels:  parsing
Scrapysharp
reborn of https://bitbucket.org/rflechner/scrapysharp
Stars: ✭ 226 (+769.23%)
Mutual labels:  parsing
Pollinate
Template your base files and generate new projects from Git(Hub).
Stars: ✭ 213 (+719.23%)
Mutual labels:  parsing
Pypacker
📦 The fastest and simplest packet manipulation lib for Python
Stars: ✭ 216 (+730.77%)
Mutual labels:  parsing
Jsmn
Jsmn is a world fastest JSON parser/tokenizer. This is the official repo replacing the old one at Bitbucket
Stars: ✭ 2,794 (+10646.15%)
Mutual labels:  parsing
Vscode Antlr4
ANTLR4 language support for Visual Studio Code
Stars: ✭ 213 (+719.23%)
Mutual labels:  parsing
Ohm
A library and language for building parsers, interpreters, compilers, etc.
Stars: ✭ 3,938 (+15046.15%)
Mutual labels:  parsing
Goose Parser
Universal scrapping tool, which allows you to extract data using multiple environments
Stars: ✭ 211 (+711.54%)
Mutual labels:  parsing
Gramfuzz
gramfuzz is a grammar-based fuzzer that lets one define complex grammars to generate text and binary data formats.
Stars: ✭ 209 (+703.85%)
Mutual labels:  parsing
GPT2-Telegram-Chatbot
GPT-2 Telegram Chat bot
Stars: ✭ 67 (+157.69%)
Mutual labels:  text
Link Preview Js
Parse and/or extract web links meta information: title, description, images, videos, etc. [via OpenGraph], runs on mobiles and node.
Stars: ✭ 240 (+823.08%)
Mutual labels:  parsing

DotGrok

.NET Parse text with pattern.

build

Installation

Package Manager

Install-Package DotGrok

.NET CLI

dotnet add package DotGrok

Usage

Example 1

// Setting extract format "%{PatternName:ExtractName}"
var grok = DotGrok.Grok.NewBuilder("%{Method:Method} %{HttpVersion:Version} %{StatusCode:StatusCode}")
    .AddPattern("Method", @"\w{3,4}")
    .AddPattern("HttpVersion", @"HTTP\/\d+.\d+")
    .AddPattern("StatusCode", @"\d{3}")
    .Build();

var sampleData = [
    "GET HTTP/1.1 200",
    "GET HTTP/1.1 404"
    "POST HTTP/1.1 200"
];

foreach(var line in sampleData)
{
    var result = grok.Match(line);
    foreach(var item in result.Items)
    {
        System.Console.WriteLine($"{item.Name} : {item.Value}");
    }
}

Example 2

var grok = DotGrok.Grok.NewBuilder("%{DateTime:Date}")
    .AddPattern("DateTime", @"\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}")
    .AddConverter(s => DateTime.parse())
    .Build();

var r = grok.Match("2018-01-01 12:32:23.345 INFO test message 1233tdsg");

var items = r.Items.ToList();

Assert.Equal(new DateTime(2018, 01, 01, 12, 32, 23, 345), items[0].Value);

Example 3

// Read apache access log format like below
// 64.242.88.10 - - [07/Mar/2004:16:10:02 -0800] "GET /mailman/listinfo/hsdivision HTTP/1.1" 200
var grok = DotGrok.Grok.NewBuilder(
    "%{ClientId:ClientId} - - \\[%{Text:Date}\\] \"%{Method:Method} %{Text:Url} %{HttpVersion:HttpVersion}\" %{StatusCode:StatusCode}")
    .AddPattern("ClientId", @"\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}|.+")
    .AddPattern("Text", @".+")
    .AddPattern("Method", @"\w{3,4}")
    .AddPattern("HttpVersion", @"HTTP\/\d+.\d+")
    .AddPattern("StatusCode", @"\d{3}")
    .Build();

foreach (var line in File.ReadLines("./sample_apache_access_log.txt").Take(10))
{
    var result = grok.Match(line);
    var text = string.Join(", ", result.Items.Select(item => $"{item.Name}:{item.Value}"));
    System.Console.WriteLine(text);
    System.Console.WriteLine();
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].