

cursive_re - readable regular expressions for Python 3
source link: https://www.tuicool.com/articles/hit/eQVzyyj
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

cursive_re
Readable regular expressions for Python 3.6 and up.
Installation
pip install cursive_re
Examples
>>> from cursive_re import * >>> hash = text('#') >>> hexdigit = any_of(in_range('0', '9') + in_range('a-f') + in_range('A-F')) >>> hexcolor = ( ... beginning_of_line() + hash + ... group(repeated(hexdigit, exactly=6) | repeated(hexdigit, exactly=3)) + ... end_of_line() ... ) >>> str(hexcolor) '^\\#([a-f0-9]{6}|[a-f0-9]{3})$' >>> hexcolor_re = compile(hexcolor) re.compile('^\\#([a-f0-9]{6}|[a-f0-9]{3})$') >>> hexcolor_re.match('#fff') <re.Match object; span=(0, 4), match='#fff'> >>> hexcolor_re.match('#ffff') is None True >>> hexcolor_re.match('#ffffff') <re.Match object; span=(0, 7), match='#ffffff'> >>> domain_name = one_or_more(any_of(in_range('a', 'z') + in_range('0', '9') + text('-'))) >>> domain = domain_name + zero_or_more(text('.') + domain_name) >>> path_segment = zero_or_more(none_of('/')) >>> path = zero_or_more(text('/') + path_segment) >>> url = ( ... group(one_or_more(any_of(in_range('a', 'z'))), name='scheme') + text('://') + ... group(domain, name='domain') + ... group(path, name='path') ... ) >>> str(url) '(?P<scheme>[a-z]+)://(?P<domain>[a-z0-9\-]+(?:\.[a-z0-9\-]+)*)(?P<path>(?:/[^/]*)*)'
Reference
cursive_re.compile
Compile a cursive_re expression to a real regular expression.
cursive_re.beginning_of_line
Matches the beginning of a line.
Examples:
>>> str(beginning_of_line()) '^'
cursive_re.end_of_line
Matches the end of a line.
Examples:
>>> str(end_of_line()) '$'
cursive_re.anything
Matches any character.
Examples:
>>> str(anything()) '.'
cursive_re.literal
Inserts a literal regular expression.
Examples:
>>> str(literal(r"\A\w")) '\\A\\w'
cursive_re.text
Matches the given string exactly, escaping any special characters.
Examples:
>>> str(text("abc")) 'abc'
cursive_re.any_of
Matches any of the given characters.
Examples:
>>> str(any_of("ab")) '[ab]' >>> str(any_of(text("ab"))) '[ab]' >>> str(any_of(text("[]"))) '[\\[\\]]'
cursive_re.none_of
Matches none of the given characters.
Examples:
>>> str(none_of("ab")) '[^ab]' >>> str(none_of(text("ab"))) '[^ab]' >>> str(none_of(text("[]"))) '[^\\[\\]]'
cursive_re.in_range
Matches a character in the given range.
Examples:
>>> str(in_range("a", "z")) 'a-z'
cursive_re.zero_or_more
Matches zero or more of the given expr.
Examples:
>>> str(zero_or_more("a")) '(?:a)*' >>> str(zero_or_more(text("a"))) '(?:a)*' >>> str(zero_or_more(text("abc"))) '(?:abc)*' >>> str(zero_or_more(group(text("abc")))) '(abc)*'
cursive_re.one_or_more
Matches one or more of the given expr.
Examples:
>>> str(one_or_more("a")) '(?:a)+' >>> str(one_or_more(text("a"))) '(?:a)+' >>> str(one_or_more(group(text("abc")))) '(abc)+'
cursive_re.maybe
Matches an expr if present.
Examples:
>>> str(maybe("abc")) '(?:abc)?' >>> str(maybe(text("abc"))) '(?:abc)?' >>> str(maybe(group(text("abc")))) '(abc)?' >>> str(maybe(any_of("abc"))) '[abc]?'
cursive_re.repeated
Matches an expr repeated an exact number of times.
Examples:
>>> str(repeated("a", exactly=5)) '(?:a){5}' >>> str(repeated(text("a"), exactly=5)) '(?:a){5}' >>> str(repeated(text("a"), at_least=1)) '(?:a){1,}' >>> str(repeated(text("a"), at_most=5)) '(?:a){0,5}' >>> str(repeated(text("a"), at_least=2, at_most=5, greedy=False)) '(?:a){2,5}?'
cursive_re.group
Denotes a group whose contents can be retrieved after a match is performed.
Examples:
>>> str(group(text("a"))) '(a)' >>> str(group(any_of("abc"), name="chars")) '(?P<chars>[abc])'
Recommend
-
32
README.md cursive_re Readable regular expressions for Python 3.6 and up. Installation pip install cursive_re ...
-
13
In this tutorial, you’ll explore regular expressions , also known as regexes , in Python. A regex is a special sequence of characters that defines a pattern for complex string-matching...
-
6
A series on using regular expressions with Python, with examples. Including matching characters, repetitions, captured groups, assertions, and functions.
-
13
Regular Expressions and Building Regexes in Python In this course, you’ll explore regular expressions, also known as regexes, in Python. A regex is a special sequence of characters that defines a pa...
-
9
Python triple quote strings and regular expressions There are several ways to quote strings in Python. Triple quotes let strings span multiple lines. Line breaks in your source file be...
-
5
Welcome to LWN.net The following subscription-only content has been made available to you by an LWN subscriber. Thousands of subscribers depend on LWN for the best news from the Linux and free software communities....
-
12
Animating Regular Expressions With Python and GraphvizPeering into the internals of a regex engine
-
5
Francis T. O'Donovan Senior Data Science Manager at Hospital IQ – Planet discoverer, researcher, dev...
-
10
Python, Catastrophic Regular Expressions and the GIL “Some people, whe...
-
5
Using Regular Expressions in Python: A Brief Guide This article wi...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK