跳转到主要内容

适用于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 查看哈希值)

上传时间 Python 3

由以下支持