Simple pattern compiler library


License
Apache-2.0
Install
pip install RexP==0.1.4

Documentation

RexP

Simple Pattern Compiler Library

pip install rexp
import re
from rexp.patterns import DEFAULT_PATTERN_SET
from rexp.compiler import PatternCompiler

if __name__ == '__main__':
    log = 'GET /api/v1/sources?$filter=Id%20eq%20oid%27507f191e810c19729de860ea%27 HTTP/1.1'
    
    compiler = PatternCompiler(pattern_set=DEFAULT_PATTERN_SET)
    compiler.register(pattern_set=dict(
        HTTP_VERB=r'(GET|POST|PUT|DELETE)'
    ))
    
    expr = compiler.compile(
        pattern='$1{HTTP_VERB} $2{RE(.+)} HTTP/$3{NUM}',
        capture_names=[
            'http_verb',
            'relative_url',
            'http_ver'
        ])
        
    m = re.search(expr, log)
    result = m.groupdict()
    print result

    assert result == {
        'http_verb': 'GET',
        'relative_url': '/api/v1/sources?$filter=Id%20eq%20oid%27507f191e810c19729de860ea%27',
        'http_ver': '1.1'
    }