Metadata-Version: 1.0 Name: hachoir-regex Version: 1.0.2 Summary: Manipulation of regular expressions (regex) Home-page: http://hachoir.org/wiki/hachoir-regex Author: Victor Stinner Author-email: UNKNOWN License: GNU GPL v2 Download-URL: http://hachoir.org/wiki/hachoir-regex Description: Hachoir regex ============= hachoir-regex is a Python library for regular expression (regex or regexp) manupulation. You can use a|b (or) and a+b (and) operators. Expressions are optimized during the construction: merge ranges, simplify repetitions, etc. It also contains a class for pattern matching allowing to search multiple strings and regex at the same time. Website: http://hachoir.org/wiki/hachoir-regex Changelog ========= * 2007-07-12: Version 1.0.2: refix PatternMatching without any pattern * 2007-06-28: Version 1.0.1: fix PatternMatching without any pattern * 2007-06-28: Version 1.0 released Regex examples ============== Regex are optimized during their creation: >>> from hachoir_regex import parse, createRange, createString >>> createString("bike") + createString("motor") >>> parse('(foo|fooo|foot|football)') Create character range: >>> regex = createString("1") | createString("3") >>> regex >>> regex |= createRange("2", "4") >>> regex As you can see, you can use classic "a|b" (or) and "a+b" (and) Python operators. Example of regular expressions using repetition: >>> parse("(a{2,}){3,4}") >>> parse("(a*|b)*") >>> parse("(a*|b|){4,5}") Compute minimum/maximum matched pattern: >>> r=parse('(cat|horse)') >>> r.minLength(), r.maxLength() (3, 5) >>> r=parse('(a{2,}|b+)') >>> r.minLength(), r.maxLength() (1, None) Pattern maching =============== Use PatternMaching if you would like to find many strings or regex in a string. Use addString() and addRegex() to add your patterns. >>> from hachoir_regex import PatternMatching >>> p = PatternMatching() >>> p.addString("a") >>> p.addString("b") >>> p.addRegex("[cd]") And then use search() to find all patterns: >>> for start, end, item in p.search("a b c d"): ... print "%s..%s: %s" % (start, end, item) ... 0..1: a 2..3: b 4..5: [cd] 6..7: [cd] You can also attach an objet to a pattern with 'user' (user data) argument: >>> p = PatternMatching() >>> p.addString("un", 1) >>> p.addString("deux", 2) >>> for start, end, item in p.search("un deux"): ... print "%r at %s: user=%r" % (item, start, item.user) ... at 0: user=1 at 3: user=2 Installation ============ With distutils: sudo ./setup.py install Or using setuptools: sudo ./setup.py --setuptools install Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: Intended Audience :: Education Classifier: License :: OSI Approved :: GNU General Public License (GPL) Classifier: Natural Language :: English Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Topic :: Scientific/Engineering :: Information Analysis Classifier: Topic :: Software Development :: Interpreters Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Text Processing Classifier: Topic :: Utilities