def is_ipv4_addr(inputstr): from pyparsing import Combine, Word, nums ipAddress = Combine(Word(nums) + ('.' + Word(nums)) * 3) try: ipAddress.parseString(inputstr) return True except: return False
def is_log_type(cls, string): check = Combine(SYSLOG_TS + SP + HOSTNAME + SP + cls.W_APP(cls.APP)) try: r = check.parseString(string).asDict() return cls.APP in r and r[cls.APP] == cls.APP except: pass return False
def taking_action(): prefix = 'A Fistful of' + White() fist_contents = Word(alphas) fist_contents.setParseAction(uppercase_it) title_parser = Combine(prefix + fist_contents) for title in ('A Fistful of Dollars', 'A Fistful of Spaghetti', 'A Fistful of Doughnuts'): print(title_parser.parseString(title))
def urlsplit(url, scheme='', allow_fragments=1): """Parse a URL into 5 components: <scheme>://<netloc>/<path>?<query>#<fragment> Return a 5-tuple: (scheme, netloc, path, query, fragment). Note that we don't break the components up in smaller bits (e.g. netloc is a single string) and we don't expand % escapes.""" global _urlBNF key = url, scheme, allow_fragments cached = _parse_cache.get(key, None) if cached: return cached if len(_parse_cache) >= MAX_CACHE_SIZE: # avoid runaway growth clear_cache() if (_urlBNF is None): scheme_chars = alphanums + "+-." urlscheme = Word( scheme_chars ) netloc_chars = "".join( [ c for c in printables if c not in "/." ] ) netloc = Combine(delimitedList( Word( netloc_chars ), ".", combine=True )) path_chars = "".join( [ c for c in printables if c not in "?" ] ) path = Word( path_chars ) query_chars = "".join( [ c for c in printables if c not in "#" ] ) query = Word( query_chars ) fragment = Word( printables+" " ) _urlBNF = Combine(Optional(urlscheme.setResultsName("scheme") + ":" ) + Optional(Literal("//").suppress() + netloc, default="").setResultsName("netloc") + Optional(path.setResultsName("path"), default="") + Optional(Literal("?").suppress() + query, default="").setResultsName("query") + Optional(Literal("#").suppress() + fragment, default="").setResultsName("fragment") ) tokens = _urlBNF.parseString( url ) tuple = (tokens.scheme or scheme), tokens.netloc[0], tokens.path, tokens.query[0], tokens.fragment[0] _parse_cache[key] = tuple return tuple
import pprint import glob import os # %load_ext autoreload # %autoreload 2 import prepro as pp #ssn ::= num+ '-' num+ '-' num+ #num ::= '0' | '1' | '2' etc dash = '-' ssn = Combine(Word(nums, exact=3) + dash + Word(nums, exact=2) + Suppress('-') + Word(nums, exact=4)) target = '123-45-6789' result = ssn.parseString(target) print(result) cc = CommandCleaner('xymatrix') cc.show_matches(short_example)[0][0] example_ini = '''[DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 ForwardX11 = yes [bitbucket.org] User = hg [topsecret.server.com]