适用于Python 3.6及更高版本的易读正则表达式。
项目描述
cursive_re
适用于Python 3.6及更高版本的易读正则表达式。
安装
pip install cursive_re
示例
>>> 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>(?:/[^/]*)*)'
参考
cursive_re.compile
将cursive_re表达式编译为真实正则表达式。
cursive_re.beginning_of_line
匹配行的开头。
示例
>>> str(beginning_of_line())
'^'
cursive_re.end_of_line
匹配行的结尾。
示例
>>> str(end_of_line())
'$'
cursive_re.anything
匹配任何字符。
示例
>>> str(anything())
'.'
cursive_re.literal
插入一个字面量正则表达式。
示例
>>> str(literal(r"\A\w"))
'\\A\\w'
cursive_re.text
精确匹配给定的字符串,转义任何特殊字符。
示例
>>> str(text("abc"))
'abc'
cursive_re.any_of
匹配给定的任意字符。
示例
>>> str(any_of("ab"))
'[ab]'
>>> str(any_of(text("ab")))
'[ab]'
>>> str(any_of(text("[]")))
'[\\[\\]]'
cursive_re.none_of
匹配给定的任意字符之外。
示例
>>> str(none_of("ab"))
'[^ab]'
>>> str(none_of(text("ab")))
'[^ab]'
>>> str(none_of(text("[]")))
'[^\\[\\]]'
cursive_re.in_range
匹配给定范围内的字符。
示例
>>> str(in_range("a", "z"))
'a-z'
cursive_re.zero_or_more
匹配给定表达式的零次或多次。
示例
>>> 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
匹配给定表达式的至少一次。
示例
>>> str(one_or_more("a"))
'(?:a)+'
>>> str(one_or_more(text("a")))
'(?:a)+'
>>> str(one_or_more(group(text("abc"))))
'(abc)+'
cursive_re.maybe
如果存在,则匹配表达式。
示例
>>> str(maybe("abc"))
'(?:abc)?'
>>> str(maybe(text("abc")))
'(?:abc)?'
>>> str(maybe(group(text("abc"))))
'(abc)?'
>>> str(maybe(any_of("abc")))
'[abc]?'
cursive_re.repeated
匹配表达式重复确切次数。
示例
>>> 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
表示一个组,其内容在匹配后可以检索。
示例
>>> str(group(text("a")))
'(a)'
>>> str(group(any_of("abc"), name="chars"))
'(?P<chars>[abc])'
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定要选择哪个,请了解更多关于安装包的信息。
源代码分发
cursive_re-0.0.4.tar.gz (4.6 kB 查看哈希值)
构建分发
cursive_re-0.0.4-py3-none-any.whl (5.4 kB 查看哈希值)
关闭
cursive_re-0.0.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 76d95b552deb2f531b4d07fdfdc258e5f1d0f84bdb993cc954e35d30086ba0f8 |
|
MD5 | 64c9e6f05d85c174c0ce68cb0587fb8c |
|
BLAKE2b-256 | 35db97138bcacdf133c4039092438824250d8b52463541281e0beb79c034b75c |
关闭
cursive_re-0.0.4-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 36008331e91e5d3c96ecb6701f12c30fc815f2aecd782a0cebd10d73a0a7f11c |
|
MD5 | e1c37b35f32f47b68f392bc5e2bed830 |
|
BLAKE2b-256 | be2cc9c5a4145fe61aef4a3bf7e9028566c0563971b5798efefb6fd5949ee825 |