替代正则表达式模块,用于替换re。
项目描述
简介
此regex实现与标准‘re’模块向后兼容,但提供额外的功能。
Python 2
Python 2不再受支持。支持Python 2的最后一个版本是2021.11.10。
PyPy
此模块针对CPython。它假定所有码点具有相同的宽度,因此在U+0000..U+007F之外使用PyPy时可能无法正确行为,因为PyPy将字符串存储为UTF-8。
多线程
regex模块在实例化内置(不可变)字符串类时释放GIL,允许其他Python线程并发运行。也可以通过调用匹配方法并使用关键字参数concurrent=True强制regex模块在匹配时释放GIL。如果字符串在匹配过程中更改,则行为未定义,因此仅在保证不会发生更改时使用它。
Unicode
此模块支持Unicode 16.0.0。支持完整的Unicode大小写折叠。
标志
存在两种标志:作用域和全局。作用域标志只能应用于模式的一部分,可以开启或关闭;全局标志应用于整个模式,只能开启。
作用域标志包括:ASCII (?a)、FULLCASE (?f)、IGNORECASE (?i)、LOCALE (?L)、MULTILINE (?m)、DOTALL (?s)、UNICODE (?u)、VERBOSE (?x)、WORD (?w)。
全局标志包括:BESTMATCH (?b)、ENHANCEMATCH (?e)、POSIX (?p)、REVERSE (?r)、VERSION0 (?V0)、VERSION1 (?V1)。
如果没有指定 ASCII、LOCALE 或 UNICODE 标志,默认将根据正则表达式模式是 Unicode 字符串还是字节串来决定是 UNICODE 还是 ASCII。
ENHANCEMATCH 标志使模糊匹配尝试改善其找到的下一个匹配的契合度。
BESTMATCH 标志使模糊匹配搜索最佳匹配而不是下一个匹配。
旧版与新版行为比较
为了与 re 模块兼容,本模块具有两种行为
版本 0 行为(旧行为,与 re 模块兼容)
请注意,re 模块的行为可能会随时间变化,我会尽力在版本 0 中匹配该行为。
由 VERSION0 标志指示。
在 Python 3.7 之前,re 模块中未能正确处理零宽匹配。这些早期版本的行为是:
.split 不会在零宽匹配处分割字符串。
.sub 在零宽匹配后前进一个字符。
内联标志应用于整个模式,并且无法关闭。
仅支持简单的集合。
Unicode 中的不区分大小写的匹配默认使用简单的折叠。
版本 1 行为(新行为,可能与 re 模块不同)
由 VERSION1 标志指示。
正确处理零宽匹配。
内联标志应用于组的末尾或模式末尾,并且可以关闭。
支持嵌套集合和集合运算。
Unicode 中的不区分大小写的匹配默认使用完整的折叠。
如果没有指定版本,正则表达式模块将默认使用 regex.DEFAULT_VERSION。
Unicode 中的不区分大小写的匹配
正则表达式模块支持 Unicode 中不区分大小写的简单和完整折叠。可以使用 FULLCASE 标志开启完整折叠。请注意,此标志会影响 IGNORECASE 标志的行为;FULLCASE 标志本身不会开启不区分大小写的匹配。
版本 0 行为:默认关闭。
版本 1 行为:默认开启。
嵌套集合和集合运算
由于集合中的未转义"["在含义上的差异,无法同时支持像re模块中使用的简单集合和嵌套集合。
例如,在版本0的行为(简单集合,与re模块兼容)中,模式[[a-z]--[aeiou]]被处理为
包含“[”和字母“a”到“z”的集合
文字“–”
包含字母“a”、“e”、“i”、“o”、“u”的集合
文字“]”
但在版本1的行为(嵌套集合,增强行为)中,则作为
一个集合,它
包含字母“a”到“z”的集合
但排除
包含字母“a”、“e”、“i”、“o”、“u”的集合
版本0行为:仅支持简单集合。
版本1行为:支持嵌套集合和集合操作。
关于命名组的说明
所有组都有一个组号,从1开始。
具有相同组名的组将具有相同的组号,而具有不同组名的组将具有不同的组号。
同一个名字可以被多个组使用,后续捕获将覆盖早期捕获。组的所有捕获都将通过match对象的captures方法可用。
在分支重置的不同分支之间将重用组号,例如(?|(first)|(second))只有一个组1。如果组有不同的组名,那么它们当然会有不同的组号,例如(?|(?P<foo>first)|(?P<bar>second))有组1(“foo”)和组2(“bar”)。
在正则表达式(\s+)(?|(?P<foo>[A-Z]+)|(\w+) (?P<foo>[0-9]+))中有2个组
(\s+)是组1。
(?P<foo>[A-Z]+)是组2,也称为“foo”。
(\w+)是组2,因为使用了分支重置。
(?P<foo>[0-9]+)是组2,因为它被命名为“foo”。
如果您想防止(\w+)成为组2,您需要给它命名(不同的名字,不同的组号)。
附加功能
问题号与Python错误跟踪器相关,除非另有说明。
添加了\p{Horiz_Space}和\p{Vert_Space}(GitHub问题477)
\p{Horiz_Space}或\p{H}匹配水平空白,而\p{Vert_Space}或\p{V}匹配垂直空白。
添加了对条件模式中查找的支持(Hg问题163)
条件模式的测试可以是查找。
>>> regex.match(r'(?(?=\d)\d+|\w+)', '123abc')
<regex.Match object; span=(0, 3), match='123'>
>>> regex.match(r'(?(?=\d)\d+|\w+)', 'abc123')
<regex.Match object; span=(0, 6), match='abc123'>
这并不完全等同于在成对选择的第一分支中放置查找。
>>> print(regex.match(r'(?:(?=\d)\d+\b|\w+)', '123abc'))
<regex.Match object; span=(0, 6), match='123abc'>
>>> print(regex.match(r'(?(?=\d)\d+\b|\w+)', '123abc'))
None
在第一个示例中,查找匹配了,但第一分支的其余部分未匹配,因此尝试了第二分支,而在第二个示例中,查找匹配了,第一分支未匹配,但第二分支没有尝试。
添加了POSIX匹配(最左最长匹配)(Hg问题150)
POSIX标准规定正则表达式应返回最左最长匹配。可以使用POSIX标志将其打开。
>>> # Normal matching.
>>> regex.search(r'Mr|Mrs', 'Mrs')
<regex.Match object; span=(0, 2), match='Mr'>
>>> regex.search(r'one(self)?(selfsufficient)?', 'oneselfsufficient')
<regex.Match object; span=(0, 7), match='oneself'>
>>> # POSIX matching.
>>> regex.search(r'(?p)Mr|Mrs', 'Mrs')
<regex.Match object; span=(0, 3), match='Mrs'>
>>> regex.search(r'(?p)one(self)?(selfsufficient)?', 'oneselfsufficient')
<regex.Match object; span=(0, 17), match='oneselfsufficient'>
请注意,这将需要更长的时间来找到匹配项,因为当它在某个位置找到匹配项时,它不会立即返回,而是会继续寻找那里是否还有更长的匹配项。
添加了(?(DEFINE)...)(Hg问题152)
如果没有名为“DEFINE”的组,则以下内容将被忽略,除非在其中定义的任何组都可以被调用,并且组编号的正常规则仍然适用。
>>> regex.search(r'(?(DEFINE)(?P<quant>\d+)(?P<item>\w+))(?&quant) (?&item)', '5 elephants')
<regex.Match object; span=(0, 11), match='5 elephants'>
添加了(*PRUNE)、(*SKIP)和(*FAIL)(Hg问题153)
(*PRUNE)丢弃到该点为止的所有回溯信息。在原子组或前瞻中使用时,它不会影响外部模式。
(*SKIP)类似于(*PRUNE),除了它还设置下一次尝试匹配文本的位置。在原子组或前瞻中使用时,它不会影响外部模式。
(*FAIL)导致立即回溯。(*F)是一个允许的缩写。
添加了\K(Hg问题151)
保留从\K出现位置开始直到整个匹配的部分;其前面的部分将被丢弃。
它不影响组返回的内容。
>>> m = regex.search(r'(\w\w\K\w\w\w)', 'abcdef')
>>> m[0]
'cde'
>>> m[1]
'abcde'
>>>
>>> m = regex.search(r'(?r)(\w\w\K\w\w\w)', 'abcdef')
>>> m[0]
'bc'
>>> m[1]
'bcdef'
为expandf和subf/subfn添加了捕获子索引(Hg问题133)
您可以使用子索引获取重复组的捕获。
>>> m = regex.match(r"(\w)+", "abc")
>>> m.expandf("{1}")
'c'
>>> m.expandf("{1[0]} {1[1]} {1[2]}")
'a b c'
>>> m.expandf("{1[-1]} {1[-2]} {1[-3]}")
'c b a'
>>>
>>> m = regex.match(r"(?P<letter>\w)+", "abc")
>>> m.expandf("{letter}")
'c'
>>> m.expandf("{letter[0]} {letter[1]} {letter[2]}")
'a b c'
>>> m.expandf("{letter[-1]} {letter[-2]} {letter[-3]}")
'c b a'
添加了对使用(?P=...)通过编号引用组的功能
这是在现有的\g<...>的基础上增加的。
修复了与位置敏感正则表达式的处理
LOCALE标志旨在用于旧代码,并具有有限的支持。您仍然建议使用Unicode。
添加了部分匹配(Hg问题102)
部分匹配是匹配到字符串末尾的匹配,但该字符串已被截断,您想知道如果字符串没有被截断,是否可能有一个完整的匹配。
部分匹配通过带有partial关键字参数的match、search、fullmatch和finditer得到支持。
匹配对象有一个partial属性,如果它是部分匹配,则该属性为True。
例如,如果您想要用户输入一个4位数,并在输入时逐个检查它
>>> pattern = regex.compile(r'\d{4}')
>>> # Initially, nothing has been entered:
>>> print(pattern.fullmatch('', partial=True))
<regex.Match object; span=(0, 0), match='', partial=True>
>>> # An empty string is OK, but it's only a partial match.
>>> # The user enters a letter:
>>> print(pattern.fullmatch('a', partial=True))
None
>>> # It'll never match.
>>> # The user deletes that and enters a digit:
>>> print(pattern.fullmatch('1', partial=True))
<regex.Match object; span=(0, 1), match='1', partial=True>
>>> # It matches this far, but it's only a partial match.
>>> # The user enters 2 more digits:
>>> print(pattern.fullmatch('123', partial=True))
<regex.Match object; span=(0, 3), match='123', partial=True>
>>> # It matches this far, but it's only a partial match.
>>> # The user enters another digit:
>>> print(pattern.fullmatch('1234', partial=True))
<regex.Match object; span=(0, 4), match='1234'>
>>> # It's a complete match.
>>> # If the user enters another digit:
>>> print(pattern.fullmatch('12345', partial=True))
None
>>> # It's no longer a match.
>>> # This is a partial match:
>>> pattern.match('123', partial=True).partial
True
>>> # This is a complete match:
>>> pattern.match('1233', partial=True).partial
False
*运算符与sub()不正确地工作(Hg问题106)
有时不清楚如何处理零宽匹配。例如,应该.*匹配在匹配了>0个字符之后的0个字符吗?
>>> regex.sub('.*', 'x', 'test')
'xx'
>>> regex.sub('.*?', '|', 'test')
'|||||||||'
添加了capturesdict(Hg问题86)
capturesdict是groupdict和captures的组合
groupdict返回一个包含命名组和这些组的最后一个捕获的字典。
captures返回一个包含一个组的所有捕获的列表。
capturesdict返回一个包含命名组和这些组的所有捕获列表的字典。
>>> m = regex.match(r"(?:(?P<word>\w+) (?P<digits>\d+)\n)+", "one 1\ntwo 2\nthree 3\n")
>>> m.groupdict()
{'word': 'three', 'digits': '3'}
>>> m.captures("word")
['one', 'two', 'three']
>>> m.captures("digits")
['1', '2', '3']
>>> m.capturesdict()
{'word': ['one', 'two', 'three'], 'digits': ['1', '2', '3']}
添加了allcaptures和allspans(Git问题474)
allcaptures返回所有组的所有捕获的列表。
allspans返回所有组的所有捕获的跨度列表。
>>> m = regex.match(r"(?:(?P<word>\w+) (?P<digits>\d+)\n)+", "one 1\ntwo 2\nthree 3\n")
>>> m.allcaptures()
(['one 1\ntwo 2\nthree 3\n'], ['one', 'two', 'three'], ['1', '2', '3'])
>>> m.allspans()
([(0, 20)], [(0, 3), (6, 9), (12, 17)], [(4, 5), (10, 11), (18, 19)])
允许组名称重复(《Hg问题87》)
组名称可以重复。
>>> # With optional groups:
>>>
>>> # Both groups capture, the second capture 'overwriting' the first.
>>> m = regex.match(r"(?P<item>\w+)? or (?P<item>\w+)?", "first or second")
>>> m.group("item")
'second'
>>> m.captures("item")
['first', 'second']
>>> # Only the second group captures.
>>> m = regex.match(r"(?P<item>\w+)? or (?P<item>\w+)?", " or second")
>>> m.group("item")
'second'
>>> m.captures("item")
['second']
>>> # Only the first group captures.
>>> m = regex.match(r"(?P<item>\w+)? or (?P<item>\w+)?", "first or ")
>>> m.group("item")
'first'
>>> m.captures("item")
['first']
>>>
>>> # With mandatory groups:
>>>
>>> # Both groups capture, the second capture 'overwriting' the first.
>>> m = regex.match(r"(?P<item>\w*) or (?P<item>\w*)?", "first or second")
>>> m.group("item")
'second'
>>> m.captures("item")
['first', 'second']
>>> # Again, both groups capture, the second capture 'overwriting' the first.
>>> m = regex.match(r"(?P<item>\w*) or (?P<item>\w*)", " or second")
>>> m.group("item")
'second'
>>> m.captures("item")
['', 'second']
>>> # And yet again, both groups capture, the second capture 'overwriting' the first.
>>> m = regex.match(r"(?P<item>\w*) or (?P<item>\w*)", "first or ")
>>> m.group("item")
''
>>> m.captures("item")
['first', '']
添加了 fullmatch(《问题#16203》)
fullmatch 的行为与 match 类似,但它必须匹配整个字符串。
>>> print(regex.fullmatch(r"abc", "abc").span())
(0, 3)
>>> print(regex.fullmatch(r"abc", "abcx"))
None
>>> print(regex.fullmatch(r"abc", "abcx", endpos=3).span())
(0, 3)
>>> print(regex.fullmatch(r"abc", "xabcy", pos=1, endpos=4).span())
(1, 4)
>>>
>>> regex.match(r"a.*?", "abcd").group(0)
'a'
>>> regex.fullmatch(r"a.*?", "abcd").group(0)
'abcd'
添加了 subf 和 subfn
subf 和 subfn 分别是 sub 和 subn 的替代方案。当传递一个替换字符串时,它们将其视为格式字符串。
>>> regex.subf(r"(\w+) (\w+)", "{0} => {2} {1}", "foo bar")
'foo bar => bar foo'
>>> regex.subf(r"(?P<word1>\w+) (?P<word2>\w+)", "{word2} {word1}", "foo bar")
'bar foo'
添加了 expandf 到匹配对象
expandf 是 expand 的替代方案。当传递一个替换字符串时,它将其视为格式字符串。
>>> m = regex.match(r"(\w+) (\w+)", "foo bar")
>>> m.expandf("{0} => {2} {1}")
'foo bar => bar foo'
>>>
>>> m = regex.match(r"(?P<word1>\w+) (?P<word2>\w+)", "foo bar")
>>> m.expandf("{word2} {word1}")
'bar foo'
分离搜索的字符串
匹配对象通过其 string 属性包含对搜索的字符串的引用。使用 detach_string 方法将“分离”该字符串,使其可用于垃圾回收,如果该字符串非常大,这可能会节省宝贵的内存。
>>> m = regex.search(r"\w+", "Hello world")
>>> print(m.group())
Hello
>>> print(m.string)
Hello world
>>> m.detach_string()
>>> print(m.group())
Hello
>>> print(m.string)
None
递归模式(《Hg问题27》)
支持递归和重复模式。
(?R) 或 (?0) 尝试递归地匹配整个正则表达式。 (?1)、(?2) 等,尝试匹配相关的组。
(?&name) 尝试匹配命名组。
>>> regex.match(r"(Tarzan|Jane) loves (?1)", "Tarzan loves Jane").groups()
('Tarzan',)
>>> regex.match(r"(Tarzan|Jane) loves (?1)", "Jane loves Tarzan").groups()
('Jane',)
>>> m = regex.search(r"(\w)(?:(?R)|(\w?))\1", "kayak")
>>> m.group(0, 1, 2)
('kayak', 'k', None)
前两个例子显示了组内的子模式是如何被重复使用的,但它本身不是一个组。换句话说,“"(Tarzan|Jane) loves (?1)”与“"(Tarzan|Jane) loves (?:Tarzan|Jane)”等价。
可以回溯到递归或重复的组。
如果有多个组具有相同的组名称或组编号,则不能调用该组("模糊的组引用")。
也支持替代形式 (?P>name) 和 (?P&name)。
支持完整的Unicode大小写折叠
在版本1的行为中,正则表达式模块在Unicode中进行不区分大小写的匹配时使用完整的大小写折叠。
>>> regex.match(r"(?iV1)strasse", "stra\N{LATIN SMALL LETTER SHARP S}e").span()
(0, 6)
>>> regex.match(r"(?iV1)stra\N{LATIN SMALL LETTER SHARP S}e", "STRASSE").span()
(0, 7)
在版本0的行为中,它使用简单的大小写折叠以与re模块保持向后兼容。
近似“模糊”匹配(《Hg问题12》、《Hg问题41》、《Hg问题109》)
正则表达式通常尝试精确匹配,但有时需要近似或“模糊”匹配,这对于搜索的文本可能包含插入、删除或替换字符的错误形式的情况。
模糊正则表达式指定允许哪种类型的错误,并且可选地,每种类型的最小和最大或仅最大允许数量。(不能仅指定最小。)
3种错误类型是
插入,用“i”表示
删除,用“d”表示
替换,用“s”表示
此外,“e”表示任何类型的错误。
正则表达式项的模糊性在项之后用“{”和“}”指定。
示例
foo 精确匹配“foo”
(?:foo){i} 匹配“foo”,允许插入
(?:foo){d} 匹配“foo”,允许删除
(?:foo){s} 匹配“foo”,允许替换
(?:foo){i,s} 匹配“foo”,允许插入和替换
(?:foo){e} 匹配“foo”,允许错误
如果指定了某种类型的错误,则未指定的任何类型将 不允许。
以下示例中,我将省略项目,只写模糊性。
{d<=3} 允许最多 3 次删除,但不允许其他类型。
{i<=1,s<=2} 允许最多 1 次插入和最多 2 次替换,但不允许删除。
{1<=e<=3} 允许至少 1 次错误,最多 3 次错误。
{i<=2,d<=2,e<=3} 允许最多 2 次插入,最多 2 次删除,总共最多 3 次错误,但不允许替换。
还可以指定每种类型错误的成本以及允许的最大总成本。
示例
{2i+2d+1s<=4} 每次插入成本 2,每次删除成本 2,每次替换成本 1,总成本不得超过 4。
{i<=1,d<=1,s<=1,2i+2d+1s<=4} 最多 1 次插入,最多 1 次删除,最多 1 次替换;每次插入成本 2,每次删除成本 2,每次替换成本 1,总成本不得超过 4。
如果想要一个排他性的最小值或最大值,可以用“<”代替“<=”。
可以为替换或插入的字符添加一个测试。
示例
{s<=2:[a-z]} 最多 2 次替换,替换的字符必须在字符集 [a-z] 中。
{s<=2,i<=3:\d} 最多 2 次替换,最多 3 次插入,插入的必须是数字。
默认情况下,模糊匹配搜索第一个符合给定约束的匹配项。 ENHANCEMATCH 标志将使它尝试改进(即减少错误的数量)已找到的匹配。
BESTMATCH 标志将使其搜索最佳匹配。
其他示例
regex.search("(dog){e}", "cat and dog")[1] 返回 "cat",因为那匹配 "dog" 有 3 个错误(允许无限数量的错误)。
regex.search("(dog){e<=1}", "cat and dog")[1] 返回 " dog"(带前导空格),因为那匹配 "dog" 有 1 个错误,在限制范围内。
regex.search("(?e)(dog){e<=1}", "cat and dog")[1] 返回 "dog"(不带前导空格),因为模糊搜索匹配 " dog" 有 1 个错误,在限制范围内,然后 (?e) 尝试更好的匹配。
在前两个示例中,字符串的后面有完美的匹配,但在这两种情况下,都不是第一个可能的匹配。
匹配对象有一个 fuzzy_counts 属性,它给出了替换、插入和删除的总数。
>>> # A 'raw' fuzzy match:
>>> regex.fullmatch(r"(?:cats|cat){e<=1}", "cat").fuzzy_counts
(0, 0, 1)
>>> # 0 substitutions, 0 insertions, 1 deletion.
>>> # A better match might be possible if the ENHANCEMATCH flag used:
>>> regex.fullmatch(r"(?e)(?:cats|cat){e<=1}", "cat").fuzzy_counts
(0, 0, 0)
>>> # 0 substitutions, 0 insertions, 0 deletions.
匹配对象还有一个 fuzzy_changes 属性,它给出了替换、插入和删除位置的元组。
>>> m = regex.search('(fuu){i<=2,d<=2,e<=5}', 'anaconda foo bar')
>>> m
<regex.Match object; span=(7, 10), match='a f', fuzzy_counts=(0, 2, 2)>
>>> m.fuzzy_changes
([], [7, 8], [10, 11])
这意味着,如果字符串的匹配部分是
'anacondfuuoo bar'
它将是一个完全匹配。
但是,在第 7 和 8 个位置有插入
'anaconda fuuoo bar'
^^
在第 10 和 11 个位置有删除
'anaconda f~~oo bar'
^^
所以实际的字符串是
'anaconda foo bar'
命名列表 \L<name> (Hg issue 11)
有时你可能需要在正则表达式中包含一个选项列表(实际上,是一个集合)。
一种方法是构建如下模式
>>> p = regex.compile(r"first|second|third|fourth|fifth")
但如果列表很大,解析生成的正则表达式可能需要相当多的时间,还必须注意字符串被正确转义并正确排序,例如,“cats”在“cat”之前。
新的替代方法是使用命名列表
>>> option_set = ["first", "second", "third", "fourth", "fifth"]
>>> p = regex.compile(r"\L<options>", options=option_set)
项目顺序无关紧要,它们被视为一个集合。命名列表是作为模式对象的 .named_lists 属性提供的
>>> print(p.named_lists)
{'options': frozenset({'third', 'first', 'fifth', 'fourth', 'second'})}
如果有任何未使用的关键字参数,除非你告知它,否则将引发 ValueError
>>> option_set = ["first", "second", "third", "fourth", "fifth"]
>>> p = regex.compile(r"\L<options>", options=option_set, other_options=[])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python310\lib\site-packages\regex\regex.py", line 353, in compile
return _compile(pattern, flags, ignore_unused, kwargs, cache_pattern)
File "C:\Python310\lib\site-packages\regex\regex.py", line 500, in _compile
complain_unused_args()
File "C:\Python310\lib\site-packages\regex\regex.py", line 483, in complain_unused_args
raise ValueError('unused keyword argument {!a}'.format(any_one))
ValueError: unused keyword argument 'other_options'
>>> p = regex.compile(r"\L<options>", options=option_set, other_options=[], ignore_unused=True)
>>> p = regex.compile(r"\L<options>", options=option_set, other_options=[], ignore_unused=False)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python310\lib\site-packages\regex\regex.py", line 353, in compile
return _compile(pattern, flags, ignore_unused, kwargs, cache_pattern)
File "C:\Python310\lib\site-packages\regex\regex.py", line 500, in _compile
complain_unused_args()
File "C:\Python310\lib\site-packages\regex\regex.py", line 483, in complain_unused_args
raise ValueError('unused keyword argument {!a}'.format(any_one))
ValueError: unused keyword argument 'other_options'
>>>
单词的开始和结束
\m 匹配单词的开始。
\M 匹配单词的结束。
与 \b 进行比较,它匹配单词的开始或结束。
Unicode行分隔符
通常只有一个行分隔符是 \n (\x0A),但如果 WORD 标志被打开,则行分隔符是 \x0D\x0A、\x0A、\x0B、\x0C 和 \x0D,以及当使用 Unicode 时,还有 \x85、\u2028 和 \u2029。
这会影响正则表达式的点 ".",如果没有打开 DOTALL 标志,它匹配任何字符,除了行分隔符。它还影响行锚点 ^ 和 $(在多行模式中)。
集合运算符
仅第 1 版行为
已添加集合运算符,并且一个集合 [...] 可以包含嵌套集合。
运算符的优先级顺序如下
|| 用于并集(“x||y”表示“x 或 y”)
~~ (双波浪号)用于对称差集(“x~~y”表示“x 或 y,但不能同时两者都有”)
&& 用于交集(“x&&y”表示“x 和 y”)
--(双破折号)用于差集(“x–y”表示“x 但不是 y”)
隐式并集,即简单并置,例如 [ab],具有最高优先级。因此,[ab&&cd] 与 [[a||b]&&[c||d]] 相同。
示例
[ab] # 包含‘a’和‘b’的集合
[a-z] # 包含‘a’ .. ‘z’的集合
[[a-z]--[qw]] # 包含‘a’ .. ‘z’,但不包含‘q’或‘w’的集合
[a-z--qw] # 与上面相同
[\p{L}--QW] # 不包含‘Q’和‘W’的所有字母的集合
[\p{N}--[0-9]] # 不包含‘0’ .. ‘9’的所有数字的集合
[\p{ASCII}&&\p{Letter}] # 包含所有ASCII和字母字符的集合
regex.escape (问题 #2650)
regex.escape 有一个额外的关键字参数 special_only。当为 True 时,仅转义“特殊”正则表达式字符,例如“?”。
>>> regex.escape("foo!?", special_only=False)
'foo\\!\\?'
>>> regex.escape("foo!?", special_only=True)
'foo!\\?'
regex.escape (Hg问题 249)
regex.escape 有一个额外的关键字参数 literal_spaces。当为 True 时,不转义空格。
>>> regex.escape("foo bar!?", literal_spaces=False)
'foo\\ bar!\\?'
>>> regex.escape("foo bar!?", literal_spaces=True)
'foo bar!\\?'
重复捕获(问题 #7132)
匹配对象具有额外的方法,这些方法返回关于重复组所有成功匹配的信息。这些方法包括:
matchobject.captures([group1, ...])
返回一个列表,包含在组或组中匹配的字符串。与 matchobject.group([group1, ...]) 进行比较。
matchobject.starts([group])
返回一个列表,包含开始位置。与 matchobject.start([group]) 进行比较。
matchobject.ends([group])
返回一个列表,包含结束位置。与 matchobject.end([group]) 进行比较。
matchobject.spans([group])
返回一个列表,包含范围。与 matchobject.span([group]) 进行比较。
>>> m = regex.search(r"(\w{3})+", "123456789")
>>> m.group(1)
'789'
>>> m.captures(1)
['123', '456', '789']
>>> m.start(1)
6
>>> m.starts(1)
[0, 3, 6]
>>> m.end(1)
9
>>> m.ends(1)
[3, 6, 9]
>>> m.span(1)
(6, 9)
>>> m.spans(1)
[(0, 3), (3, 6), (6, 9)]
原子分组 (?>...) (问题 #433030)
如果随后的模式失败,则整个子模式将失败。
占有量词
(?:...)?+ ; (?:...)*+ ; (?:...)++ ; (?:...){min,max}+
子模式匹配到“max”次。如果随后的模式失败,则所有重复的子模式将整体失败。例如,(?:...)++ 等价于 (?>(?:...)+)。
作用域标志 (问题 #433028)
(?flags-flags:...)
标志仅应用于子模式。标志可以开启或关闭。
“单词”字符的定义 (问题 #1693050)
“单词”字符的定义已扩展至Unicode。它符合 http://www.unicode.org/reports/tr29/ 上的Unicode规范。
可变长度后视匹配
后视匹配可以匹配可变长度的字符串。
regex.split, regex.sub 和 regex.subn 的 flags 参数 (问题 #3482)
regex.split,regex.sub 和 regex.subn 支持一个“flags”参数。
regex.sub 和 regex.subn 的 pos 和 endpos 参数
regex.sub 和 regex.subn 支持‘pos’和‘endpos’参数。
regex.findall 和 regex.finditer 的“Overlapped”参数
regex.findall 和 regex.finditer 支持一个“overlapped”标志,允许重叠匹配。
Splititer
regex.splititer 已添加。它是 regex.split 的生成器等价物。
为组使用匹配对象的索引
匹配对象可以通过索引和切片访问组。
>>> m = regex.search(r"(?P<before>.*?)(?P<num>\d+)(?P<after>.*)", "pqr123stu")
>>> print(m["before"])
pqr
>>> print(len(m))
4
>>> print(m[:])
('pqr123stu', 'pqr', '123', 'stu')
命名组
可以使用 (?<name>...) 以及现有的 (?P<name>...) 来命名组。
组引用
可以在模式内使用 \g<name> 来引用组。这也允许存在超过99个组。
命名字符 \N{name}
支持命名字符。注意,只有Python的Unicode数据库所知的那些会被识别。
Unicode代码点属性,包括脚本和块
\p{property=value}; \P{property=value}; \p{value} ; \P{value}
支持许多Unicode属性,包括块和脚本。 \p{property=value} 或 \p{property:value} 匹配属性 property 的值为 value 的字符。 \p{property=value} 的逆是 \P{property=value} 或 \p{^property=value}。
如果使用简写形式 \p{value},则按照以下顺序检查属性:General_Category、Script、Block、二进制属性。
拉丁,表示“拉丁”脚本(Script=Latin)。
BasicLatin,表示“BasicLatin”块(Block=BasicLatin)。
Alphabetic,表示“Alphabetic”二进制属性(Alphabetic=Yes)。
以 Is 开头的简写形式表示脚本或二进制属性
IsLatin,表示“拉丁”脚本(Script=Latin)。
IsAlphabetic,表示“Alphabetic”二进制属性(Alphabetic=Yes)。
以 In 开头的简写形式表示块属性
InBasicLatin,表示“BasicLatin”块(Block=BasicLatin)。
POSIX字符类
[[:alpha:]];[[:^alpha:]]
POSIX字符类受到支持。这些通常被视为 \p{...} 的另一种形式。
例外是 alnum、digit、punct 和 xdigit,它们的定义与Unicode不同。
[[:alnum:]] 等同于 \p{posix_alnum}。
[[:digit:]] 等同于 \p{posix_digit}。
[[:punct:]] 等同于 \p{posix_punct}。
[[:xdigit:]] 等同于 \p{posix_xdigit}。
搜索锚点 \G
已添加搜索锚点。它匹配每个搜索开始/继续的位置,可用于连续匹配或在负变长后视中限制后视的范围。
>>> regex.findall(r"\w{2}", "abcd ef")
['ab', 'cd', 'ef']
>>> regex.findall(r"\G\w{2}", "abcd ef")
['ab', 'cd']
搜索从位置 0 开始并匹配“ab”。
搜索从位置 2 开始并匹配“cd”。
搜索从位置 4 开始并无法匹配任何字母。
锚点阻止搜索开始位置的前移,因此没有更多结果。
反向搜索
搜索也可以反向进行
>>> regex.findall(r".", "abc")
['a', 'b', 'c']
>>> regex.findall(r"(?r).", "abc")
['c', 'b', 'a']
请注意,反向搜索的结果不一定是正向搜索的逆序
>>> regex.findall(r"..", "abcde")
['ab', 'cd']
>>> regex.findall(r"(?r)..", "abcde")
['de', 'bc']
匹配单个图形 \X
图形匹配器受到支持。它符合 Unicode 规范,可在 http://www.unicode.org/reports/tr29/ 上找到。
分支重置 (?|...|...)
组号将在备选方案之间重复使用,但具有不同名称的组将具有不同的组号。
>>> regex.match(r"(?|(first)|(second))", "first").groups()
('first',)
>>> regex.match(r"(?|(first)|(second))", "second").groups()
('second',)
请注意,只有一个组。
默认Unicode单词边界
WORD 标志将“单词边界”的定义更改为默认 Unicode 单词边界。这适用于 \b 和 \B。
超时
匹配方法和函数支持超时。超时(以秒为单位)适用于整个操作。
>>> from time import sleep
>>>
>>> def fast_replace(m):
... return 'X'
...
>>> def slow_replace(m):
... sleep(0.5)
... return 'X'
...
>>> regex.sub(r'[a-z]', fast_replace, 'abcde', timeout=2)
'XXXXX'
>>> regex.sub(r'[a-z]', slow_replace, 'abcde', timeout=2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python310\lib\site-packages\regex\regex.py", line 278, in sub
return pat.sub(repl, string, count, pos, endpos, concurrent, timeout)
TimeoutError: regex timed out
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码发行版
构建发行版
regex-2024.9.11.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6c188c307e8433bcb63dc1915022deb553b4203a70722fc542c363bf120a01fd |
|
MD5 | a544771359e2c977578297506de829eb |
|
BLAKE2b-256 | f938148df33b4dbca3bd069b963acab5e0fa1a9dbd6820f8c322d0dd6faeff96 |
regex-2024.9.11-cp313-cp313-win_amd64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 042c55879cfeb21a8adacc84ea347721d3d83a159da6acdf1116859e2427c43f |
|
MD5 | 53f5762f5c3a5ddadd77a2d049856046 |
|
BLAKE2b-256 | ff8051ba3a4b7482f6011095b3a036e07374f64de180b7d870b704ed22509002 |
regex-2024.9.11-cp313-cp313-win32.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e997fd30430c57138adc06bba4c7c2968fb13d101e57dd5bb9355bf8ce3fa7e8 |
|
MD5 | 5d910fbeb8a72c1c381b6d4b831f9602 |
|
BLAKE2b-256 | 583af5903977647a9a7e46d5535e9e96c194304aeeca7501240509bde2f9e17f |
regex-2024.9.11-cp313-cp313-musllinux_1_2_x86_64.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6a2644a93da36c784e546de579ec1806bfd2763ef47babc1b03d765fe560c9f8 |
|
MD5 | f7491b60735ca063011fd00c6d886553 |
|
BLAKE2b-256 | 127f8398c8155a3c70703a8e91c29532558186558e1aea44144b382faa2a6f7a |
regex-2024.9.11-cp313-cp313-musllinux_1_2_s390x.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | eee9130eaad130649fd73e5cd92f60e55708952260ede70da64de420cdcad554 |
|
MD5 | c9aa89cc6f9d6df32c8d695d923a2eb4 |
|
BLAKE2b-256 | 344f5d04da61c7c56e785058a46349f7285ae3ebc0726c6ea7c5c70600a52233 |
regex-2024.9.11-cp313-cp313-musllinux_1_2_ppc64le.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dd4490a33eb909ef5078ab20f5f000087afa2a4daa27b4c072ccb3cb3050ad84 |
|
MD5 | f9f6bbdf831d8cf113536ec61fe48a1c |
|
BLAKE2b-256 | 191d43ed03a236313639da5a45e61bc553c8d41e925bcf29b0f8ecff0c2c3f25 |
regex-2024.9.11-cp313-cp313-musllinux_1_2_i686.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f8404bf61298bb6f8224bb9176c1424548ee1181130818fcd2cbffddc768bed8 |
|
MD5 | f75f5383483b720213a33b21ce850808 |
|
BLAKE2b-256 | 12d9cbc30f2ff7164f3b26a7760f87c54bf8b2faed286f60efd80350a51c5b99 |
哈希值 for regex-2024.9.11-cp313-cp313-musllinux_1_2_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c57d08ad67aba97af57a7263c2d9006d5c404d721c5f7542f077f109ec2a4a29 |
|
MD5 | d01ce783e367e3c6bbc6745311b0832f |
|
BLAKE2b-256 | d85cd2429be49ef3292def7688401d3deb11702c13dcaecdc71d2b407421275b |
哈希值 for regex-2024.9.11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0ea51dcc0835eea2ea31d66456210a4e01a076d820e9039b04ae8d17ac11dee6 |
|
MD5 | df29909eec984b4b8bc747590d985f17 |
|
BLAKE2b-256 | f810601303b8ee93589f879664b0cfd3127949ff32b17f9b6c490fb201106c4d |
哈希值 for regex-2024.9.11-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9d4a76b96f398697fe01117093613166e6aa8195d63f1b4ec3f21ab637632963 |
|
MD5 | 5acccd4077fdc0b02196e9a0af81d31b |
|
BLAKE2b-256 | cd9e187363bdf5d8c0e4662117b92aa32bf52f8f09620ae93abc7537d96d3311 |
哈希值 for regex-2024.9.11-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f47cd43a5bfa48f86925fe26fbdd0a488ff15b62468abb5d2a1e092a4fb10e85 |
|
MD5 | 21d50b1e031651d9bbb7733ad2899554 |
|
BLAKE2b-256 | b2e76b2f642c3cded271c4f16cc4daa7231be544d30fe2b168e0223724b49a61 |
哈希值 for regex-2024.9.11-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | eb1ae19e64c14c7ec1995f40bd932448713d3c73509e82d8cd7744dc00e29e86 |
|
MD5 | 545a9dba41a1370cf679500a27938f3a |
|
BLAKE2b-256 | b9549fe8f9aec5007bbbbce28ba3d2e3eaca425f95387b7d1e84f0d137d25237 |
哈希值 for regex-2024.9.11-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b7aaa315101c6567a9a45d2839322c51c8d6e81f67683d529512f5bcfb99c802 |
|
MD5 | e5752e058119aac78ea7c0d2f582a2af |
|
BLAKE2b-256 | ef1cea200f61ce9f341763f2717ab4daebe4422d83e9fd4ac5e33435fd3a148d |
哈希值 for regex-2024.9.11-cp313-cp313-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 220e92a30b426daf23bb67a7962900ed4613589bab80382be09b48896d211e92 |
|
MD5 | 7290bfcb5452091bff71d600086e604c |
|
BLAKE2b-256 | 8d560c262aff0e9224fa7ffce47b5458d373f4d3e3ff84e99b5ff0cb15e0b5b2 |
哈希值 for regex-2024.9.11-cp313-cp313-macosx_10_13_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4db21ece84dfeefc5d8a3863f101995de646c6cb0536952c321a2650aa202c36 |
|
MD5 | 124a94e8ec2bd8d3536ca516f2314e30 |
|
BLAKE2b-256 | a4425910a050c105d7f750a72dcb49c30220c3ae4e2654e54aaaa0e9bc0584cb |
哈希值 for regex-2024.9.11-cp313-cp313-macosx_10_13_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c157bb447303070f256e084668b702073db99bbb61d44f85d811025fcf38f784 |
|
MD5 | 0846b3c8b6236bdcd86d1fea06aae627 |
|
BLAKE2b-256 | 930ad1c6b9af1ff1e36832fe38d74d5c5bab913f2bdcbbd6bc0e7f3ce8b2f577 |
哈希值 for regex-2024.9.11-cp312-cp312-musllinux_1_2_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 18406efb2f5a0e57e3a5881cd9354c1512d3bb4f5c45d96d110a66114d84d23a |
|
MD5 | e8dcac130ec900aff08bec225fc7bb83 |
|
BLAKE2b-256 | ea759753e9dcebfa7c3645563ef5c8a58f3a47e799c872165f37c55737dadd3e |
哈希值 用于 regex-2024.9.11-cp312-cp312-musllinux_1_2_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a0b2b80321c2ed3fcf0385ec9e51a12253c50f146fddb2abbb10f033fe3d049a |
|
MD5 | b0bc0784def1f899e09b985ed78ce4d2 |
|
BLAKE2b-256 | 8111e1bdf84a72372e56f1ea4b833dd583b822a23138a616ace7ab57a0e11556 |
哈希值 用于 regex-2024.9.11-cp312-cp312-musllinux_1_2_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d552c78411f60b1fdaafd117a1fca2f02e562e309223b9d44b7de8be451ec5e0 |
|
MD5 | e2f92678e7da6f49eebe904455c2ee24 |
|
BLAKE2b-256 | 9c71eff77d3fe7ba08ab0672920059ec30d63fa7e41aa0fb61c562726e9bd721 |
哈希值 用于 regex-2024.9.11-cp312-cp312-musllinux_1_2_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 57fdd2e0b2694ce6fc2e5ccf189789c3e2962916fb38779d3e3521ff8fe7a822 |
|
MD5 | c9686b40d64b1d1a07d608c98157bf02 |
|
BLAKE2b-256 | d36715519d69b52c252b270e679cb578e22e0c02b8dd4e361f2b04efcc7f2335 |
哈希值 用于 regex-2024.9.11-cp312-cp312-musllinux_1_2_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 98eeee2f2e63edae2181c886d7911ce502e1292794f4c5ee71e60e23e8d26b5d |
|
MD5 | 0ef0e4bfeac0f76d368eefd607fa6331 |
|
BLAKE2b-256 | 6f753ea7ec29de0bbf42f21f812f48781d41e627d57a634f3f23947c9a46e303 |
哈希值 用于 regex-2024.9.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 85ab7824093d8f10d44330fe1e6493f756f252d145323dd17ab6b48733ff6c0a |
|
MD5 | cb47f8dae5ecfbca542d60e16a63db9e |
|
BLAKE2b-256 | 295284662b6636061277cb857f658518aa7db6672bc6d1a3f503ccd5aefc581e |
哈希值 用于 regex-2024.9.11-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 23b30c62d0f16827f2ae9f2bb87619bc4fba2044911e2e6c2eb1af0161cdb766 |
|
MD5 | e3503e8c3c62bb09b5e1a6fc5d3818fb |
|
BLAKE2b-256 | e39486adc259ff8ec26edf35fcca7e334566c1805c7493b192cb09679f9c3dee |
哈希值 用于 regex-2024.9.11-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a8f877c89719d759e52783f7fe6e1c67121076b87b40542966c02de5503ace42 |
|
MD5 | 368c660557d581475bff6ee0f57bdf6c |
|
BLAKE2b-256 | 28db63047feddc3280cc242f9c74f7aeddc6ee662b1835f00046f57d5630c827 |
哈希值 用于 regex-2024.9.11-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ee439691d8c23e76f9802c42a95cfeebf9d47cf4ffd06f18489122dbb0a7ad64 |
|
MD5 | 2c610909537922a6a7951781333ad839 |
|
BLAKE2b-256 | cafa521eb683b916389b4975337873e66954e0f6d8f91bd5774164a57b503185 |
哈希值 用于 regex-2024.9.11-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8dee5b4810a89447151999428fe096977346cf2f29f4d5e29609d2e19e0199c9 |
|
MD5 | 61ef6ba928222393b07ccd30a554b27f |
|
BLAKE2b-256 | c32acd4675dd987e4a7505f0364a958bc41f3b84942de9efaad0ef9a2646681c |
哈希值 用于 regex-2024.9.11-cp312-cp312-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5b513b6997a0b2f10e4fd3a1313568e373926e8c252bd76c960f96fd039cd28d |
|
MD5 | 71591040dda03d811d1e2138c5dd42aa |
|
BLAKE2b-256 | 8aea909d8620329ab710dfaf7b4adee41242ab7c9b95ea8d838e9bfe76244259 |
哈希值 用于 regex-2024.9.11-cp312-cp312-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 49b0e06786ea663f933f3710a51e9385ce0cba0ea56b67107fd841a55d56a231 |
|
MD5 | bc51049f813c815479e23d65be8caead |
|
BLAKE2b-256 | 8ea2048acbc5ae1f615adc6cba36cc45734e679b5f1e4e58c3c77f0ed611d4e2 |
哈希值 用于 regex-2024.9.11-cp312-cp312-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b0d0a6c64fcc4ef9c69bd5b3b3626cc3776520a1637d8abaa62b9edc147a58f7 |
|
MD5 | 6bdd8bcae17be3c7b5f60bbc8d19f01f |
|
BLAKE2b-256 | 6e92407531450762bed778eedbde04407f68cbd75d13cee96c6f8d6903d9c6c1 |
哈希值 用于 regex-2024.9.11-cp311-cp311-musllinux_1_2_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e28f9faeb14b6f23ac55bfbbfd3643f5c7c18ede093977f1df249f73fd22c7b1 |
|
MD5 | 9ff81cd482a27b164af0e4a7a6dcf16c |
|
BLAKE2b-256 | 4514d864b2db80a1a3358534392373e8a281d95b28c29c87d8548aed58813910 |
哈希值 用于 regex-2024.9.11-cp311-cp311-musllinux_1_2_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a738b937d512b30bf75995c0159c0ddf9eec0775c9d72ac0202076c72f24aa96 |
|
MD5 | 633c02d7a124d6b8116588b8f029edfd |
|
BLAKE2b-256 | 96a7fba1eae75eb53a704475baf11bd44b3e6ccb95b316955027eb7748f24ef8 |
哈希值 用于 regex-2024.9.11-cp311-cp311-musllinux_1_2_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7fb89ee5d106e4a7a51bce305ac4efb981536301895f7bdcf93ec92ae0d91c7f |
|
MD5 | b7ee676bb702481eed4720b80f115ffd |
|
BLAKE2b-256 | 938d65b9bea7df120a7be8337c415b6d256ba786cbc9107cebba3bf8ff09da99 |
哈希值 用于 regex-2024.9.11-cp311-cp311-musllinux_1_2_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | df5cbb1fbc74a8305b6065d4ade43b993be03dbe0f8b30032cced0d7740994bd |
|
MD5 | 5a7243eb6aac7750682f1fc2bf8b4454 |
|
BLAKE2b-256 | fdcd4660756070b03ce4a66663a43f6c6e7ebc2266cc6b4c586c167917185eb4 |
哈希值 用于 regex-2024.9.11-cp311-cp311-musllinux_1_2_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 54d9ff35d4515debf14bc27f1e3b38bfc453eff3220f5bce159642fa762fe5d4 |
|
MD5 | 0ea7bce439c01a109076e9cbb3e421a2 |
|
BLAKE2b-256 | 835f031a04b6017033d65b261259c09043c06f4ef2d4eac841d0649d76d69541 |
哈希值 用于 regex-2024.9.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6113c008a7780792efc80f9dfe10ba0cd043cbf8dc9a76ef757850f51b4edc50 |
|
MD5 | f3bf10e290a643cb05e543724b031cb7 |
|
BLAKE2b-256 | e95c8b385afbfacb853730682c57be56225f9fe275c5bf02ac1fc88edbff316d |
哈希值 用于 regex-2024.9.11-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 040562757795eeea356394a7fb13076ad4f99d3c62ab0f8bdfb21f99a1f85664 |
|
MD5 | eee82e44ae61ef3be233574aa6e473ac |
|
BLAKE2b-256 | ac1c3793990c8c83ca04e018151ddda83b83ecc41d89964f0f17749f027fc44d |
哈希值 用于 regex-2024.9.11-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d05ac6fa06959c4172eccd99a222e1fbf17b5670c4d596cb1e5cde99600674c4 |
|
MD5 | c970aab2e0808619c079a0fa887cc710 |
|
BLAKE2b-256 | 074a022c5e6f0891a90cd7eb3d664d6c58ce2aba48bff107b00013f3d6167069 |
哈希值 用于 regex-2024.9.11-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a4cc92bb6db56ab0c1cbd17294e14f5e9224f0cc6521167ef388332604e92679 |
|
MD5 | 4487dd13e5811f603e60bb404907c066 |
|
BLAKE2b-256 | b15191a5ebdff17f9ec4973cb0aa9d37635efec1c6868654bbc25d1543aca4ec |
哈希值 用于 regex-2024.9.11-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8e5fb5f77c8745a60105403a774fe2c1759b71d3e7b4ca237a5e67ad066c7199 |
|
MD5 | 1fd4d2b350e82c51d927c40f4ce8a198 |
|
BLAKE2b-256 | 9b8ba4723a838b53c771e9240951adde6af58c829fb6a6a28f554e8131f53839 |
哈希值 用于 regex-2024.9.11-cp311-cp311-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 64ce2799bd75039b480cc0360907c4fb2f50022f030bf9e7a8705b636e408fad |
|
MD5 | fac1b8f1eeed523c4f2783f59b240d2d |
|
BLAKE2b-256 | 33c460f3370735135e3a8d673ddcdb2507a8560d0e759e1398d366e43d000253 |
哈希值 用于 regex-2024.9.11-cp311-cp311-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3b37fa423beefa44919e009745ccbf353d8c981516e807995b2bd11c2c77d268 |
|
MD5 | f71a50787985018f0abea9c722f3b1e4 |
|
BLAKE2b-256 | 32d9bfdd153179867c275719e381e1e8e84a97bd186740456a0dcb3e7125c205 |
哈希值 用于 regex-2024.9.11-cp311-cp311-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2cce2449e5927a0bf084d346da6cd5eb016b2beca10d0013ab50e3c226ffc0df |
|
MD5 | f90e27ebd785aafa64c08290245ebfe0 |
|
BLAKE2b-256 | 86a1d526b7b6095a0019aa360948c143aacfeb029919c898701ce7763bbe4c15 |
哈希值 用于 regex-2024.9.11-cp310-cp310-musllinux_1_2_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7a22ccefd4db3f12b526eccb129390942fe874a3a9fdbdd24cf55773a1faab1a |
|
MD5 | 89c935dc6e67f9cea1ecaedb25a2deb2 |
|
BLAKE2b-256 | b79938434984d912edbd2e1969d116257e869578f67461bd7462b894c45ed874 |
哈希值 用于 regex-2024.9.11-cp310-cp310-musllinux_1_2_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 09d77559e80dcc9d24570da3745ab859a9cf91953062e4ab126ba9d5993688ca |
|
MD5 | aec02f3444beaf130c589d80ee922d97 |
|
BLAKE2b-256 | 40b83e9484c6230b8b6e8f816ab7c9a080e631124991a4ae2c27a81631777db0 |
哈希值 用于 regex-2024.9.11-cp310-cp310-musllinux_1_2_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3ce4f1185db3fbde8ed8aa223fc9620f276c58de8b0d4f8cc86fd1360829edb6 |
|
MD5 | deab5768c6b74bdb43506da1c7e43c13 |
|
BLAKE2b-256 | 657b953075723dd5ab00780043ac2f9de667306ff9e2a85332975e9f19279174 |
哈希值 用于 regex-2024.9.11-cp310-cp310-musllinux_1_2_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c0256beda696edcf7d97ef16b2a33a8e5a875affd6fa6567b54f7c577b30a137 |
|
MD5 | ce7899373342c9ebff84971f6bb0bd77 |
|
BLAKE2b-256 | 970737e460ab5ca84be8e1e197c3b526c5c86993dcc9e13cbc805c35fc2463c1 |
哈希值 用于 regex-2024.9.11-cp310-cp310-musllinux_1_2_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 635a1d96665f84b292e401c3d62775851aedc31d4f8784117b3c68c4fcd4118d |
|
MD5 | b30df7ec26a5e7208667d8d06d1c01e8 |
|
BLAKE2b-256 | 713a52ff61054d15a4722605f5872ad03962b319a04c1ebaebe570b8b9b7dde1 |
哈希值 用于 regex-2024.9.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5ddcd9a179c0a6fa8add279a4444015acddcd7f232a49071ae57fa6e278f1f71 |
|
MD5 | f4fbd8c61ac6926e2e99fe276e1de065 |
|
BLAKE2b-256 | cb19556638aa11c2ec9968a1da998f07f27ec0abb9bf3c647d7c7985ca0b8eea |
哈希值 用于 regex-2024.9.11-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e9a091b0550b3b0207784a7d6d0f1a00d1d1c8a11699c1a4d93db3fbefc3ad35 |
|
MD5 | dc565d6778e1b54179d756b5eeacf24c |
|
BLAKE2b-256 | 22918339dd3abce101204d246e31bc26cdd7ec07c9f91598472459a3a902aa41 |
哈希值 用于 regex-2024.9.11-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a906ed5e47a0ce5f04b2c981af1c9acf9e8696066900bf03b9d7879a6f679fc8 |
|
MD5 | ae0184289639641f0c35b17e7c95ab8a |
|
BLAKE2b-256 | 3c65b9f002ab32f7b68e7d1dcabb67926f3f47325b8dbc22cc50b6a043e1d07c |
哈希值 用于 regex-2024.9.11-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 46989629904bad940bbec2106528140a218b4a36bb3042d8406980be1941429c |
|
MD5 | 4ff4f40f97ddbe28e95f3c0b48c9896a |
|
BLAKE2b-256 | 88871ce4a5357216b19b7055e7d3b0efc75a6e426133bf1e7d094321df514257 |
哈希值 用于 regex-2024.9.11-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ced479f601cd2f8ca1fd7b23925a7e0ad512a56d6e9476f79b8f381d9d37090a |
|
MD5 | cc11987fa8b2e1be097ace4c75d8c257 |
|
BLAKE2b-256 | f10b29f2105bfac3ed08e704914c38e93b07c784a6655f8a015297ee7173e95b |
哈希值 用于 regex-2024.9.11-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6b41e1adc61fa347662b09398e31ad446afadff932a24807d3ceb955ed865cc8 |
|
MD5 | 417036088bc35430af9a38e5bac7f6b2 |
|
BLAKE2b-256 | d1e97a5bc4c6ef8d9cd2bdd83a667888fc35320da96a4cc4da5fa084330f53db |
哈希值 用于 regex-2024.9.11-cp310-cp310-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 16e13a7929791ac1216afde26f712802e3df7bf0360b32e4914dca3ab8baeea5 |
|
MD5 | b7fca74c15fe316450118937a2654c10 |
|
BLAKE2b-256 | 69a8b2fb45d9715b1469383a0da7968f8cacc2f83e9fbbcd6b8713752dd980a6 |
哈希值 用于 regex-2024.9.11-cp310-cp310-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0e12c481ad92d129c78f13a2a3662317e46ee7ef96c94fd332e1c29131875b7d |
|
MD5 | 101f32bf43756ff842afd56ad54696db |
|
BLAKE2b-256 | c124595ddb9bec2a9b151cdaf9565b0c9f3da9f0cb1dca6c158bc5175332ddf8 |
哈希值 用于 regex-2024.9.11-cp310-cp310-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1494fa8725c285a81d01dc8c06b55287a1ee5e0e382d8413adc0a9197aac6408 |
|
MD5 | c8b18d19810927bf300ff7012c644e10 |
|
BLAKE2b-256 | 6312497bd6599ce8a239ade68678132296aec5ee25ebea45fc8ba91aa60fceec |
哈希值 用于 regex-2024.9.11-cp39-cp39-musllinux_1_2_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0ffbcf9221e04502fc35e54d1ce9567541979c3fdfb93d2c554f0ca583a19b35 |
|
MD5 | 8b45c57de5ff3a08b595b84904ed0a07 |
|
BLAKE2b-256 | b9f082ea1565a6639270cfe96263002b3d91084a1db5048d9b6084f83bd5972d |
哈希值 用于 regex-2024.9.11-cp39-cp39-musllinux_1_2_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e53b5fbab5d675aec9f0c501274c467c0f9a5d23696cfc94247e1fb56501ed89 |
|
MD5 | a3c5d71e8ce22faff0324b34ead383ed |
|
BLAKE2b-256 | 83cba378cdc2468782eefefa50183bbeabc3357fb588d4109d845f0a56e68713 |
哈希值 用于 regex-2024.9.11-cp39-cp39-musllinux_1_2_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 73d6d2f64f4d894c96626a75578b0bf7d9e56dcda8c3d037a2118fdfe9b1c664 |
|
MD5 | d7c0dd1a341a19bc504340d2ede40110 |
|
BLAKE2b-256 | 1671d964c0c9d447f04bbe6ab5eafd220208e7d52b9608e452e6fcad553b38e0 |
哈希值 用于 regex-2024.9.11-cp39-cp39-musllinux_1_2_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 54c4a097b8bc5bb0dfc83ae498061d53ad7b5762e00f4adaa23bee22b012e6ba |
|
MD5 | d40b186aa327274f581c3245ad1adde9 |
|
BLAKE2b-256 | 79ba92ef9d3b8f59cb3df9febef07098dfb4a43c3bdcf35b1084c2009b0a93bf |
哈希值 用于 regex-2024.9.11-cp39-cp39-musllinux_1_2_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0cbff728659ce4bbf4c30b2a1be040faafaa9eca6ecde40aaff86f7889f4ab39 |
|
MD5 | 3c2fccd24d3acdc945c93f7ce3d06dff |
|
BLAKE2b-256 | cbd21d44f9b4a3d33ff5773fd79bea53e992d00f81e0af6f1f4e2efac1e4d897 |
哈希值 用于 regex-2024.9.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 297f54910247508e6e5cae669f2bc308985c60540a4edd1c77203ef19bfa63ca |
|
MD5 | 15d7e7416ba3d829750d9fc2be0f1cca |
|
BLAKE2b-256 | 01e6a7256c99c312b68f01cfd4f8eae6e770906fffb3832ecb66f35ca5b86b96 |
哈希值 用于 regex-2024.9.11-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 69dee6a020693d12a3cf892aba4808fe168d2a4cef368eb9bf74f5398bfd4ee8 |
|
MD5 | 5556c0fb5579a4fd5087982057c2f789 |
|
BLAKE2b-256 | d5e779c04ccb81cee2831d9d4499274919b9153c1741ce8b3421d69cb0032f1b |
哈希值 用于 regex-2024.9.11-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 02087ea0a03b4af1ed6ebab2c54d7118127fee8d71b26398e8e4b05b78963199 |
|
MD5 | 29259f0837c7c10f11c99bc5463da513 |
|
BLAKE2b-256 | bb8993516f0aa3e8a9366df2cf79bb0290abdc7dbe5dd27373d9bea0978b7ba6 |
哈希值 用于 regex-2024.9.11-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c69ada171c2d0e97a4b5aa78fbb835e0ffbb6b13fc5da968c09811346564f0d3 |
|
MD5 | ee178cbd0960822672eb5a564b338bef |
|
BLAKE2b-256 | b421feaa5b0d3e5e3bad659cd7d640e6b76cc0719504dbd9bc8f67cfa21bde82 |
哈希值 用于 regex-2024.9.11-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | eab4bb380f15e189d1313195b062a6aa908f5bd687a0ceccd47c8211e9cf0d4a |
|
MD5 | 7042534616b0c6bea98fd2dfc45083c1 |
|
BLAKE2b-256 | 95787acd8882ac335f1f5ae1756417739fda3053e0bcacea8716ae4a04e74553 |
哈希值 用于 regex-2024.9.11-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ecea58b43a67b1b79805f1a0255730edaf5191ecef84dbc4cc85eb30bc8b63b9 |
|
MD5 | c468491c9d5b307670f09315ac478e59 |
|
BLAKE2b-256 | 18c429e8b6ff2208775858b5d4a2caa6428d40b5fade95aee426de7e42ffff39 |
哈希值 用于 regex-2024.9.11-cp39-cp39-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6edd623bae6a737f10ce853ea076f56f507fd7726bee96a41ee3d68d347e4d16 |
|
MD5 | 86c2a1a2f39968782f145e0f43d41d5d |
|
BLAKE2b-256 | 3f364b60a0c2e4cc6ecb2651be828117a31f42fae55a51a484a8071729df56a6 |
哈希值 用于 regex-2024.9.11-cp39-cp39-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4838e24ee015101d9f901988001038f7f0d90dc0c3b115541a1365fb439add62 |
|
MD5 | 18106ae00966ad8b93d5f1d83e5248dd |
|
BLAKE2b-256 | a1b5449c2f14fc20dc42ef9729469fcff42809393470f021ed6c6fcf5f3d3297 |
哈希值 用于 regex-2024.9.11-cp39-cp39-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 07f45f287469039ffc2c53caf6803cd506eb5f5f637f1d4acb37a738f71dd066 |
|
MD5 | 3a8433c19a43254c2757694f26d67e33 |
|
BLAKE2b-256 | a1aae31baf8482ad690ccb3cdf20d1963a01e98d137e4d9ee493dbb0fa8ba2c6 |
哈希值 用于 regex-2024.9.11-cp38-cp38-musllinux_1_2_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 846bc79ee753acf93aef4184c040d709940c9d001029ceb7b7a52747b80ed2dd |
|
MD5 | d3ad01d126632f92827e14fad07ade89 |
|
BLAKE2b-256 | 5f13387d6c7d39c55dbfb06552b7ace7a2ddc05493403618a2f55da71f495832 |
哈希值 用于 regex-2024.9.11-cp38-cp38-musllinux_1_2_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e93f1c331ca8e86fe877a48ad64e77882c0c4da0097f2212873a69bbfea95d0c |
|
MD5 | 96c4f4862c91b08703cb36d244339422 |
|
BLAKE2b-256 | 41ba4ce9ef3e3fe1645a55b1546353768a11ac8ffc8e7a9b0a445affcd3aabe2 |
哈希值 用于 regex-2024.9.11-cp38-cp38-musllinux_1_2_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ae2941333154baff9838e88aa71c1d84f4438189ecc6021a12c7573728b5838e |
|
MD5 | 7f2e41bcafeb77741155c0cc4025a794 |
|
BLAKE2b-256 | d0d4d5d5c2f757b25a5556033571421bfa469c9b0dfc5e59efeaf0eb88ecfa39 |
哈希值 用于 regex-2024.9.11-cp38-cp38-musllinux_1_2_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 23f9985c8784e544d53fc2930fc1ac1a7319f5d5332d228437acc9f418f2f168 |
|
MD5 | 80000df855723c4a786807d0ce3a955a |
|
BLAKE2b-256 | 4d8795091e0f6fc69d1235e61ddabc5dc64f00c6ee6288872564233f9a41bf27 |
哈希值 用于 regex-2024.9.11-cp38-cp38-musllinux_1_2_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f9268774428ec173654985ce55fc6caf4c6d11ade0f6f914d48ef4719eb05ebb |
|
MD5 | 630296705639a14d486df1da92a1f20f |
|
BLAKE2b-256 | 3f9fd1834185895df468860597f5934272539f21bc8112013f2e892fd6dd588e |
哈希值 用于 regex-2024.9.11-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f6fff13ef6b5f29221d6904aa816c34701462956aa72a77f1f151a8ec4f56aeb |
|
MD5 | cdcac56835f2c0b19bd1e0fa15231ad5 |
|
BLAKE2b-256 | 75d1ea4e9b22e2b19463d0def76418e21316b9a8acc88ce6b764353834015ee0 |
哈希值 用于 regex-2024.9.11-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b5b029322e6e7b94fff16cd120ab35a253236a5f99a79fb04fda7ae71ca20ae8 |
|
MD5 | 7678d0e8b4449f600f51e48226c9a6de |
|
BLAKE2b-256 | 5e8290127f8e15384c1edee89cc9b937c453e7e2419e635dc160ac2bd7f8239e |
哈希值 用于 regex-2024.9.11-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | be1c8ed48c4c4065ecb19d882a0ce1afe0745dfad8ce48c49586b90a55f02366 |
|
MD5 | 9cd9fdcc9ee75dc5d952f54fa842d67b |
|
BLAKE2b-256 | abc3b1db10548c31491fe8c8e904e032f1b9af1fd6d193bab32324caed4caf7a |
哈希值 用于 regex-2024.9.11-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 323c1f04be6b2968944d730e5c2091c8c89767903ecaa135203eec4565ed2b2b |
|
MD5 | 0cb1d0662bbd0ea9dcf09b7ef661f803 |
|
BLAKE2b-256 | 7f0d7ec6c7c306cea8fcf7413565d0f778ba056bf2b2fa97508e0506521987e7 |
哈希值 用于 regex-2024.9.11-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 079400a8269544b955ffa9e31f186f01d96829110a3bf79dc338e9910f794fca |
|
MD5 | fd6e052818cb0ad58c8d3c3942d19e99 |
|
BLAKE2b-256 | 897b4c3b129108fbcab118f93da68d7ac84dff831d71fafd8bcda711f572ac0d |
哈希值 用于 regex-2024.9.11-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 587d4af3979376652010e400accc30404e6c16b7df574048ab1f581af82065e4 |
|
MD5 | cf147f33018eb1bc2d421720603f9a15 |
|
BLAKE2b-256 | 9c924360fab411bad3dc9862742407d9c1790858e160e1e732ad2491747c4053 |
哈希值 用于 regex-2024.9.11-cp38-cp38-macosx_11_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cb130fccd1a37ed894824b8c046321540263013da72745d755f2d35114b81a60 |
|
MD5 | 1a31b68bd04a3ef9196307cd149fb463 |
|
BLAKE2b-256 | 2847d267e0c8f327d717f565cdba76d354993a350a0f6aba8efa650c0fe93d79 |
哈希值 用于 regex-2024.9.11-cp38-cp38-macosx_10_9_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 55b96e7ce3a69a8449a66984c268062fbaa0d8ae437b285428e12797baefce7e |
|
MD5 | 17118e1a575c0bfb307fc3a9eb5e849c |
|
BLAKE2b-256 | c28facb2dbdcb0ec4ce99a06544868c4a3463faad344f89437712419ccbd70a4 |
哈希值 用于 regex-2024.9.11-cp38-cp38-macosx_10_9_universal2.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 35f4a6f96aa6cb3f2f7247027b07b15a374f0d5b912c0001418d1d55024d5cb4 |
|
MD5 | a3d34145259fd070127834a929b03e30 |
|
BLAKE2b-256 | 5803ac6839452b59793683c33a3eb782671863800f4d514aec81f38098d2846f |