Skip to main content

Alternative regular expression module, to replace re.

Project description

Introduction

This regex implementation is backwards-compatible with the standard ‘re’ module, but offers additional functionality.

Note

The re module’s behaviour with zero-width matches changed in Python 3.7, and this module follows that behaviour when compiled for Python 3.7.

Python 2

Python 2 is no longer supported. The last release that supported Python 2 was 2021.11.10.

PyPy

This module is targeted at CPython. It expects that all codepoints are the same width, so it won’t behave properly with PyPy outside U+0000..U+007F because PyPy stores strings as UTF-8.

Multithreading

The regex module releases the GIL during matching on instances of the built-in (immutable) string classes, enabling other Python threads to run concurrently. It is also possible to force the regex module to release the GIL during matching by calling the matching methods with the keyword argument concurrent=True. The behaviour is undefined if the string changes during matching, so use it only when it is guaranteed that that won’t happen.

Unicode

This module supports Unicode 15.1.0. Full Unicode case-folding is supported.

Flags

There are 2 kinds of flag: scoped and global. Scoped flags can apply to only part of a pattern and can be turned on or off; global flags apply to the entire pattern and can only be turned on.

The scoped flags are: ASCII (?a), FULLCASE (?f), IGNORECASE (?i), LOCALE (?L), MULTILINE (?m), DOTALL (?s), UNICODE (?u), VERBOSE (?x), WORD (?w).

The global flags are: BESTMATCH (?b), ENHANCEMATCH (?e), POSIX (?p), REVERSE (?r), VERSION0 (?V0), VERSION1 (?V1).

If neither the ASCII, LOCALE nor UNICODE flag is specified, it will default to UNICODE if the regex pattern is a Unicode string and ASCII if it’s a bytestring.

The ENHANCEMATCH flag makes fuzzy matching attempt to improve the fit of the next match that it finds.

The BESTMATCH flag makes fuzzy matching search for the best match instead of the next match.

Old vs new behaviour

In order to be compatible with the re module, this module has 2 behaviours:

  • Version 0 behaviour (old behaviour, compatible with the re module):

    Please note that the re module’s behaviour may change over time, and I’ll endeavour to match that behaviour in version 0.

    • Indicated by the VERSION0 flag.

    • Zero-width matches are not handled correctly in the re module before Python 3.7. The behaviour in those earlier versions is:

      • .split won’t split a string at a zero-width match.

      • .sub will advance by one character after a zero-width match.

    • Inline flags apply to the entire pattern, and they can’t be turned off.

    • Only simple sets are supported.

    • Case-insensitive matches in Unicode use simple case-folding by default.

  • Version 1 behaviour (new behaviour, possibly different from the re module):

    • Indicated by the VERSION1 flag.

    • Zero-width matches are handled correctly.

    • Inline flags apply to the end of the group or pattern, and they can be turned off.

    • Nested sets and set operations are supported.

    • Case-insensitive matches in Unicode use full case-folding by default.

If no version is specified, the regex module will default to regex.DEFAULT_VERSION.

Case-insensitive matches in Unicode

The regex module supports both simple and full case-folding for case-insensitive matches in Unicode. Use of full case-folding can be turned on using the FULLCASE flag. Please note that this flag affects how the IGNORECASE flag works; the FULLCASE flag itself does not turn on case-insensitive matching.

Version 0 behaviour: the flag is off by default.

Version 1 behaviour: the flag is on by default.

Nested sets and set operations

It’s not possible to support both simple sets, as used in the re module, and nested sets at the same time because of a difference in the meaning of an unescaped "[" in a set.

For example, the pattern [[a-z]--[aeiou]] is treated in the version 0 behaviour (simple sets, compatible with the re module) as:

  • Set containing “[” and the letters “a” to “z”

  • Literal “–”

  • Set containing letters “a”, “e”, “i”, “o”, “u”

  • Literal “]”

but in the version 1 behaviour (nested sets, enhanced behaviour) as:

  • Set which is:

    • Set containing the letters “a” to “z”

  • but excluding:

    • Set containing the letters “a”, “e”, “i”, “o”, “u”

Version 0 behaviour: only simple sets are supported.

Version 1 behaviour: nested sets and set operations are supported.

Notes on named groups

All groups have a group number, starting from 1.

Groups with the same group name will have the same group number, and groups with a different group name will have a different group number.

The same name can be used by more than one group, with later captures ‘overwriting’ earlier captures. All the captures of the group will be available from the captures method of the match object.

Group numbers will be reused across different branches of a branch reset, eg. (?|(first)|(second)) has only group 1. If groups have different group names then they will, of course, have different group numbers, eg. (?|(?P<foo>first)|(?P<bar>second)) has group 1 (“foo”) and group 2 (“bar”).

In the regex (\s+)(?|(?P<foo>[A-Z]+)|(\w+) (?P<foo>[0-9]+) there are 2 groups:

  • (\s+) is group 1.

  • (?P<foo>[A-Z]+) is group 2, also called “foo”.

  • (\w+) is group 2 because of the branch reset.

  • (?P<foo>[0-9]+) is group 2 because it’s called “foo”.

If you want to prevent (\w+) from being group 2, you need to name it (different name, different group number).

Additional features

The issue numbers relate to the Python bug tracker, except where listed otherwise.

Added \p{Horiz_Space} and \p{Vert_Space} (GitHub issue 477)

\p{Horiz_Space} or \p{H} matches horizontal whitespace and \p{Vert_Space} or \p{V} matches vertical whitespace.

Added support for lookaround in conditional pattern (Hg issue 163)

The test of a conditional pattern can be a lookaround.

>>> 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'>

This is not quite the same as putting a lookaround in the first branch of a pair of alternatives.

>>> 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

In the first example, the lookaround matched, but the remainder of the first branch failed to match, and so the second branch was attempted, whereas in the second example, the lookaround matched, and the first branch failed to match, but the second branch was not attempted.

Added POSIX matching (leftmost longest) (Hg issue 150)

The POSIX standard for regex is to return the leftmost longest match. This can be turned on using the POSIX flag.

>>> # 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'>

Note that it will take longer to find matches because when it finds a match at a certain position, it won’t return that immediately, but will keep looking to see if there’s another longer match there.

Added (?(DEFINE)...) (Hg issue 152)

If there’s no group called “DEFINE”, then … will be ignored except that any groups defined within it can be called and that the normal rules for numbering groups still apply.

>>> regex.search(r'(?(DEFINE)(?P<quant>\d+)(?P<item>\w+))(?&quant) (?&item)', '5 elephants')
<regex.Match object; span=(0, 11), match='5 elephants'>

Added (*PRUNE), (*SKIP) and (*FAIL) (Hg issue 153)

(*PRUNE) discards the backtracking info up to that point. When used in an atomic group or a lookaround, it won’t affect the enclosing pattern.

(*SKIP) is similar to (*PRUNE), except that it also sets where in the text the next attempt to match will start. When used in an atomic group or a lookaround, it won’t affect the enclosing pattern.

(*FAIL) causes immediate backtracking. (*F) is a permitted abbreviation.

Added \K (Hg issue 151)

Keeps the part of the entire match after the position where \K occurred; the part before it is discarded.

It does not affect what groups return.

>>> 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'

Added capture subscripting for expandf and subf/subfn (Hg issue 133)

You can use subscripting to get the captures of a repeated group.

>>> 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'

Added support for referring to a group by number using (?P=...)

This is in addition to the existing \g<...>.

Fixed the handling of locale-sensitive regexes

The LOCALE flag is intended for legacy code and has limited support. You’re still recommended to use Unicode instead.

Added partial matches (Hg issue 102)

A partial match is one that matches up to the end of string, but that string has been truncated and you want to know whether a complete match could be possible if the string had not been truncated.

Partial matches are supported by match, search, fullmatch and finditer with the partial keyword argument.

Match objects have a partial attribute, which is True if it’s a partial match.

For example, if you wanted a user to enter a 4-digit number and check it character by character as it was being entered:

>>> 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

* operator not working correctly with sub() (Hg issue 106)

Sometimes it’s not clear how zero-width matches should be handled. For example, should .* match 0 characters directly after matching >0 characters?

# Python 3.7 and later
>>> regex.sub('.*', 'x', 'test')
'xx'
>>> regex.sub('.*?', '|', 'test')
'|||||||||'

# Python 3.6 and earlier
>>> regex.sub('(?V0).*', 'x', 'test')
'x'
>>> regex.sub('(?V1).*', 'x', 'test')
'xx'
>>> regex.sub('(?V0).*?', '|', 'test')
'|t|e|s|t|'
>>> regex.sub('(?V1).*?', '|', 'test')
'|||||||||'

Added capturesdict (Hg issue 86)

capturesdict is a combination of groupdict and captures:

groupdict returns a dict of the named groups and the last capture of those groups.

captures returns a list of all the captures of a group

capturesdict returns a dict of the named groups and lists of all the captures of those groups.

>>> 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']}

Added allcaptures and allspans (Git issue 474)

allcaptures returns a list of all the captures of all the groups.

allspans returns a list of all the spans of the all captures of all the groups.

>>> 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)])

Allow duplicate names of groups (Hg issue 87)

Group names can be duplicated.

>>> # 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', '']

Added fullmatch (issue #16203)

fullmatch behaves like match, except that it must match all of the string.

>>> 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'

Added subf and subfn

subf and subfn are alternatives to sub and subn respectively. When passed a replacement string, they treat it as a format string.

>>> 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'

Added expandf to match object

expandf is an alternative to expand. When passed a replacement string, it treats it as a format string.

>>> 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'

Detach searched string

A match object contains a reference to the string that was searched, via its string attribute. The detach_string method will ‘detach’ that string, making it available for garbage collection, which might save valuable memory if that string is very large.

>>> 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

Recursive patterns (Hg issue 27)

Recursive and repeated patterns are supported.

(?R) or (?0) tries to match the entire regex recursively. (?1), (?2), etc, try to match the relevant group.

(?&name) tries to match the named group.

>>> 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)

The first two examples show how the subpattern within the group is reused, but is _not_ itself a group. In other words, "(Tarzan|Jane) loves (?1)" is equivalent to "(Tarzan|Jane) loves (?:Tarzan|Jane)".

It’s possible to backtrack into a recursed or repeated group.

You can’t call a group if there is more than one group with that group name or group number ("ambiguous group reference").

The alternative forms (?P>name) and (?P&name) are also supported.

Full Unicode case-folding is supported

In version 1 behaviour, the regex module uses full case-folding when performing case-insensitive matches in 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)

In version 0 behaviour, it uses simple case-folding for backward compatibility with the re module.

Approximate “fuzzy” matching (Hg issue 12, Hg issue 41, Hg issue 109)

Regex usually attempts an exact match, but sometimes an approximate, or “fuzzy”, match is needed, for those cases where the text being searched may contain errors in the form of inserted, deleted or substituted characters.

A fuzzy regex specifies which types of errors are permitted, and, optionally, either the minimum and maximum or only the maximum permitted number of each type. (You cannot specify only a minimum.)

The 3 types of error are:

  • Insertion, indicated by “i”

  • Deletion, indicated by “d”

  • Substitution, indicated by “s”

In addition, “e” indicates any type of error.

The fuzziness of a regex item is specified between “{” and “}” after the item.

Examples:

  • foo match “foo” exactly

  • (?:foo){i} match “foo”, permitting insertions

  • (?:foo){d} match “foo”, permitting deletions

  • (?:foo){s} match “foo”, permitting substitutions

  • (?:foo){i,s} match “foo”, permitting insertions and substitutions

  • (?:foo){e} match “foo”, permitting errors

If a certain type of error is specified, then any type not specified will not be permitted.

In the following examples I’ll omit the item and write only the fuzziness:

  • {d<=3} permit at most 3 deletions, but no other types

  • {i<=1,s<=2} permit at most 1 insertion and at most 2 substitutions, but no deletions

  • {1<=e<=3} permit at least 1 and at most 3 errors

  • {i<=2,d<=2,e<=3} permit at most 2 insertions, at most 2 deletions, at most 3 errors in total, but no substitutions

It’s also possible to state the costs of each type of error and the maximum permitted total cost.

Examples:

  • {2i+2d+1s<=4} each insertion costs 2, each deletion costs 2, each substitution costs 1, the total cost must not exceed 4

  • {i<=1,d<=1,s<=1,2i+2d+1s<=4} at most 1 insertion, at most 1 deletion, at most 1 substitution; each insertion costs 2, each deletion costs 2, each substitution costs 1, the total cost must not exceed 4

You can also use “<” instead of “<=” if you want an exclusive minimum or maximum.

You can add a test to perform on a character that’s substituted or inserted.

Examples:

  • {s<=2:[a-z]} at most 2 substitutions, which must be in the character set [a-z].

  • {s<=2,i<=3:\d} at most 2 substitutions, at most 3 insertions, which must be digits.

By default, fuzzy matching searches for the first match that meets the given constraints. The ENHANCEMATCH flag will cause it to attempt to improve the fit (i.e. reduce the number of errors) of the match that it has found.

The BESTMATCH flag will make it search for the best match instead.

Further examples to note:

  • regex.search("(dog){e}", "cat and dog")[1] returns "cat" because that matches "dog" with 3 errors (an unlimited number of errors is permitted).

  • regex.search("(dog){e<=1}", "cat and dog")[1] returns " dog" (with a leading space) because that matches "dog" with 1 error, which is within the limit.

  • regex.search("(?e)(dog){e<=1}", "cat and dog")[1] returns "dog" (without a leading space) because the fuzzy search matches " dog" with 1 error, which is within the limit, and the (?e) then it attempts a better fit.

In the first two examples there are perfect matches later in the string, but in neither case is it the first possible match.

The match object has an attribute fuzzy_counts which gives the total number of substitutions, insertions and deletions.

>>> # 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.

The match object also has an attribute fuzzy_changes which gives a tuple of the positions of the substitutions, insertions and deletions.

>>> 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])

What this means is that if the matched part of the string had been:

'anacondfuuoo bar'

it would’ve been an exact match.

However, there were insertions at positions 7 and 8:

'anaconda fuuoo bar'
        ^^

and deletions at positions 10 and 11:

'anaconda f~~oo bar'
           ^^

So the actual string was:

'anaconda foo bar'

Named lists \L<name> (Hg issue 11)

There are occasions where you may want to include a list (actually, a set) of options in a regex.

One way is to build the pattern like this:

>>> p = regex.compile(r"first|second|third|fourth|fifth")

but if the list is large, parsing the resulting regex can take considerable time, and care must also be taken that the strings are properly escaped and properly ordered, for example, “cats” before “cat”.

The new alternative is to use a named list:

>>> option_set = ["first", "second", "third", "fourth", "fifth"]
>>> p = regex.compile(r"\L<options>", options=option_set)

The order of the items is irrelevant, they are treated as a set. The named lists are available as the .named_lists attribute of the pattern object :

>>> print(p.named_lists)
{'options': frozenset({'third', 'first', 'fifth', 'fourth', 'second'})}

If there are any unused keyword arguments, ValueError will be raised unless you tell it otherwise:

>>> 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'
>>>

Start and end of word

\m matches at the start of a word.

\M matches at the end of a word.

Compare with \b, which matches at the start or end of a word.

Unicode line separators

Normally the only line separator is \n (\x0A), but if the WORD flag is turned on then the line separators are \x0D\x0A, \x0A, \x0B, \x0C and \x0D, plus \x85, \u2028 and \u2029 when working with Unicode.

This affects the regex dot ".", which, with the DOTALL flag turned off, matches any character except a line separator. It also affects the line anchors ^ and $ (in multiline mode).

Set operators

Version 1 behaviour only

Set operators have been added, and a set [...] can include nested sets.

The operators, in order of increasing precedence, are:

  • || for union (“x||y” means “x or y”)

  • ~~ (double tilde) for symmetric difference (“x~~y” means “x or y, but not both”)

  • && for intersection (“x&&y” means “x and y”)

  • -- (double dash) for difference (“x–y” means “x but not y”)

Implicit union, ie, simple juxtaposition like in [ab], has the highest precedence. Thus, [ab&&cd] is the same as [[a||b]&&[c||d]].

Examples:

  • [ab] # Set containing ‘a’ and ‘b’

  • [a-z] # Set containing ‘a’ .. ‘z’

  • [[a-z]--[qw]] # Set containing ‘a’ .. ‘z’, but not ‘q’ or ‘w’

  • [a-z--qw] # Same as above

  • [\p{L}--QW] # Set containing all letters except ‘Q’ and ‘W’

  • [\p{N}--[0-9]] # Set containing all numbers except ‘0’ .. ‘9’

  • [\p{ASCII}&&\p{Letter}] # Set containing all characters which are ASCII and letter

regex.escape (issue #2650)

regex.escape has an additional keyword parameter special_only. When True, only ‘special’ regex characters, such as ‘?’, are escaped.

>>> regex.escape("foo!?", special_only=False)
'foo\\!\\?'
>>> regex.escape("foo!?", special_only=True)
'foo!\\?'

regex.escape (Hg issue 249)

regex.escape has an additional keyword parameter literal_spaces. When True, spaces are not escaped.

>>> regex.escape("foo bar!?", literal_spaces=False)
'foo\\ bar!\\?'
>>> regex.escape("foo bar!?", literal_spaces=True)
'foo bar!\\?'

Repeated captures (issue #7132)

A match object has additional methods which return information on all the successful matches of a repeated group. These methods are:

  • matchobject.captures([group1, ...])

    • Returns a list of the strings matched in a group or groups. Compare with matchobject.group([group1, ...]).

  • matchobject.starts([group])

    • Returns a list of the start positions. Compare with matchobject.start([group]).

  • matchobject.ends([group])

    • Returns a list of the end positions. Compare with matchobject.end([group]).

  • matchobject.spans([group])

    • Returns a list of the spans. Compare with 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)]

Atomic grouping (?>...) (issue #433030)

If the following pattern subsequently fails, then the subpattern as a whole will fail.

Possessive quantifiers

(?:...)?+ ; (?:...)*+ ; (?:...)++ ; (?:...){min,max}+

The subpattern is matched up to ‘max’ times. If the following pattern subsequently fails, then all the repeated subpatterns will fail as a whole. For example, (?:...)++ is equivalent to (?>(?:...)+).

Scoped flags (issue #433028)

(?flags-flags:...)

The flags will apply only to the subpattern. Flags can be turned on or off.

Definition of ‘word’ character (issue #1693050)

The definition of a ‘word’ character has been expanded for Unicode. It conforms to the Unicode specification at http://www.unicode.org/reports/tr29/.

Variable-length lookbehind

A lookbehind can match a variable-length string.

Flags argument for regex.split, regex.sub and regex.subn (issue #3482)

regex.split, regex.sub and regex.subn support a ‘flags’ argument.

Pos and endpos arguments for regex.sub and regex.subn

regex.sub and regex.subn support ‘pos’ and ‘endpos’ arguments.

‘Overlapped’ argument for regex.findall and regex.finditer

regex.findall and regex.finditer support an ‘overlapped’ flag which permits overlapped matches.

Splititer

regex.splititer has been added. It’s a generator equivalent of regex.split.

Subscripting match objects for groups

A match object accepts access to the groups via subscripting and slicing:

>>> 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')

Named groups

Groups can be named with (?<name>...) as well as the existing (?P<name>...).

Group references

Groups can be referenced within a pattern with \g<name>. This also allows there to be more than 99 groups.

Named characters \N{name}

Named characters are supported. Note that only those known by Python’s Unicode database will be recognised.

Unicode codepoint properties, including scripts and blocks

\p{property=value}; \P{property=value}; \p{value} ; \P{value}

Many Unicode properties are supported, including blocks and scripts. \p{property=value} or \p{property:value} matches a character whose property property has value value. The inverse of \p{property=value} is \P{property=value} or \p{^property=value}.

If the short form \p{value} is used, the properties are checked in the order: General_Category, Script, Block, binary property:

  • Latin, the ‘Latin’ script (Script=Latin).

  • BasicLatin, the ‘BasicLatin’ block (Block=BasicLatin).

  • Alphabetic, the ‘Alphabetic’ binary property (Alphabetic=Yes).

A short form starting with Is indicates a script or binary property:

  • IsLatin, the ‘Latin’ script (Script=Latin).

  • IsAlphabetic, the ‘Alphabetic’ binary property (Alphabetic=Yes).

A short form starting with In indicates a block property:

  • InBasicLatin, the ‘BasicLatin’ block (Block=BasicLatin).

POSIX character classes

[[:alpha:]]; [[:^alpha:]]

POSIX character classes are supported. These are normally treated as an alternative form of \p{...}.

The exceptions are alnum, digit, punct and xdigit, whose definitions are different from those of Unicode.

[[:alnum:]] is equivalent to \p{posix_alnum}.

[[:digit:]] is equivalent to \p{posix_digit}.

[[:punct:]] is equivalent to \p{posix_punct}.

[[:xdigit:]] is equivalent to \p{posix_xdigit}.

Search anchor \G

A search anchor has been added. It matches at the position where each search started/continued and can be used for contiguous matches or in negative variable-length lookbehinds to limit how far back the lookbehind goes:

>>> regex.findall(r"\w{2}", "abcd ef")
['ab', 'cd', 'ef']
>>> regex.findall(r"\G\w{2}", "abcd ef")
['ab', 'cd']
  • The search starts at position 0 and matches ‘ab’.

  • The search continues at position 2 and matches ‘cd’.

  • The search continues at position 4 and fails to match any letters.

  • The anchor stops the search start position from being advanced, so there are no more results.

Reverse searching

Searches can also work backwards:

>>> regex.findall(r".", "abc")
['a', 'b', 'c']
>>> regex.findall(r"(?r).", "abc")
['c', 'b', 'a']

Note that the result of a reverse search is not necessarily the reverse of a forward search:

>>> regex.findall(r"..", "abcde")
['ab', 'cd']
>>> regex.findall(r"(?r)..", "abcde")
['de', 'bc']

Matching a single grapheme \X

The grapheme matcher is supported. It conforms to the Unicode specification at http://www.unicode.org/reports/tr29/.

Branch reset (?|...|...)

Group numbers will be reused across the alternatives, but groups with different names will have different group numbers.

>>> regex.match(r"(?|(first)|(second))", "first").groups()
('first',)
>>> regex.match(r"(?|(first)|(second))", "second").groups()
('second',)

Note that there is only one group.

Default Unicode word boundary

The WORD flag changes the definition of a ‘word boundary’ to that of a default Unicode word boundary. This applies to \b and \B.

Timeout

The matching methods and functions support timeouts. The timeout (in seconds) applies to the entire operation:

>>> 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

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

regex-2024.5.15.tar.gz (394.9 kB view details)

Uploaded Source

Built Distributions

regex-2024.5.15-cp312-cp312-win_amd64.whl (268.5 kB view details)

Uploaded CPython 3.12Windows x86-64

regex-2024.5.15-cp312-cp312-win32.whl (257.3 kB view details)

Uploaded CPython 3.12Windows x86

regex-2024.5.15-cp312-cp312-musllinux_1_2_x86_64.whl (779.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

regex-2024.5.15-cp312-cp312-musllinux_1_2_s390x.whl (852.8 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ s390x

regex-2024.5.15-cp312-cp312-musllinux_1_2_ppc64le.whl (853.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ppc64le

regex-2024.5.15-cp312-cp312-musllinux_1_2_i686.whl (784.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

regex-2024.5.15-cp312-cp312-musllinux_1_2_aarch64.whl (774.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

regex-2024.5.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (788.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

regex-2024.5.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl (815.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390x

regex-2024.5.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (829.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64le

regex-2024.5.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (786.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

regex-2024.5.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (776.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

regex-2024.5.15-cp312-cp312-macosx_11_0_arm64.whl (278.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

regex-2024.5.15-cp312-cp312-macosx_10_9_x86_64.whl (282.4 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

regex-2024.5.15-cp312-cp312-macosx_10_9_universal2.whl (470.8 kB view details)

Uploaded CPython 3.12macOS 10.9+ universal2 (ARM64, x86-64)

regex-2024.5.15-cp311-cp311-win_amd64.whl (269.0 kB view details)

Uploaded CPython 3.11Windows x86-64

regex-2024.5.15-cp311-cp311-win32.whl (256.9 kB view details)

Uploaded CPython 3.11Windows x86

regex-2024.5.15-cp311-cp311-musllinux_1_2_x86_64.whl (774.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

regex-2024.5.15-cp311-cp311-musllinux_1_2_s390x.whl (848.9 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ s390x

regex-2024.5.15-cp311-cp311-musllinux_1_2_ppc64le.whl (848.4 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ppc64le

regex-2024.5.15-cp311-cp311-musllinux_1_2_i686.whl (776.7 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

regex-2024.5.15-cp311-cp311-musllinux_1_2_aarch64.whl (769.2 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

regex-2024.5.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (785.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

regex-2024.5.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl (811.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390x

regex-2024.5.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (824.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ppc64le

regex-2024.5.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (783.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

regex-2024.5.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (771.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

regex-2024.5.15-cp311-cp311-macosx_11_0_arm64.whl (278.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

regex-2024.5.15-cp311-cp311-macosx_10_9_x86_64.whl (281.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

regex-2024.5.15-cp311-cp311-macosx_10_9_universal2.whl (469.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

regex-2024.5.15-cp310-cp310-win_amd64.whl (269.0 kB view details)

Uploaded CPython 3.10Windows x86-64

regex-2024.5.15-cp310-cp310-win32.whl (256.9 kB view details)

Uploaded CPython 3.10Windows x86

regex-2024.5.15-cp310-cp310-musllinux_1_2_x86_64.whl (765.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

regex-2024.5.15-cp310-cp310-musllinux_1_2_s390x.whl (838.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ s390x

regex-2024.5.15-cp310-cp310-musllinux_1_2_ppc64le.whl (839.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ppc64le

regex-2024.5.15-cp310-cp310-musllinux_1_2_i686.whl (768.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

regex-2024.5.15-cp310-cp310-musllinux_1_2_aarch64.whl (758.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

regex-2024.5.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (775.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

regex-2024.5.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (801.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390x

regex-2024.5.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (815.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64le

regex-2024.5.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (775.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

regex-2024.5.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (689.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

regex-2024.5.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (763.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

regex-2024.5.15-cp310-cp310-macosx_11_0_arm64.whl (278.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

regex-2024.5.15-cp310-cp310-macosx_10_9_x86_64.whl (281.7 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

regex-2024.5.15-cp310-cp310-macosx_10_9_universal2.whl (469.7 kB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

regex-2024.5.15-cp39-cp39-win_amd64.whl (269.0 kB view details)

Uploaded CPython 3.9Windows x86-64

regex-2024.5.15-cp39-cp39-win32.whl (256.9 kB view details)

Uploaded CPython 3.9Windows x86

regex-2024.5.15-cp39-cp39-musllinux_1_2_x86_64.whl (765.0 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

regex-2024.5.15-cp39-cp39-musllinux_1_2_s390x.whl (837.7 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ s390x

regex-2024.5.15-cp39-cp39-musllinux_1_2_ppc64le.whl (839.1 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ppc64le

regex-2024.5.15-cp39-cp39-musllinux_1_2_i686.whl (767.6 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ i686

regex-2024.5.15-cp39-cp39-musllinux_1_2_aarch64.whl (757.7 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

regex-2024.5.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (774.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

regex-2024.5.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (800.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ s390x

regex-2024.5.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (814.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ppc64le

regex-2024.5.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (774.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

regex-2024.5.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (689.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

regex-2024.5.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (762.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

regex-2024.5.15-cp39-cp39-macosx_11_0_arm64.whl (278.3 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

regex-2024.5.15-cp39-cp39-macosx_10_9_x86_64.whl (281.7 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

regex-2024.5.15-cp39-cp39-macosx_10_9_universal2.whl (469.7 kB view details)

Uploaded CPython 3.9macOS 10.9+ universal2 (ARM64, x86-64)

regex-2024.5.15-cp38-cp38-win_amd64.whl (269.0 kB view details)

Uploaded CPython 3.8Windows x86-64

regex-2024.5.15-cp38-cp38-win32.whl (256.9 kB view details)

Uploaded CPython 3.8Windows x86

regex-2024.5.15-cp38-cp38-musllinux_1_2_x86_64.whl (767.0 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

regex-2024.5.15-cp38-cp38-musllinux_1_2_s390x.whl (837.5 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ s390x

regex-2024.5.15-cp38-cp38-musllinux_1_2_ppc64le.whl (839.0 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ppc64le

regex-2024.5.15-cp38-cp38-musllinux_1_2_i686.whl (769.7 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ i686

regex-2024.5.15-cp38-cp38-musllinux_1_2_aarch64.whl (760.6 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

regex-2024.5.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (776.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

regex-2024.5.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (803.3 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ s390x

regex-2024.5.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (817.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ppc64le

regex-2024.5.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (777.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

regex-2024.5.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (695.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

regex-2024.5.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (765.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

regex-2024.5.15-cp38-cp38-macosx_11_0_arm64.whl (278.3 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

regex-2024.5.15-cp38-cp38-macosx_10_9_x86_64.whl (281.8 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

regex-2024.5.15-cp38-cp38-macosx_10_9_universal2.whl (469.8 kB view details)

Uploaded CPython 3.8macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file regex-2024.5.15.tar.gz.

File metadata

  • Download URL: regex-2024.5.15.tar.gz
  • Upload date:
  • Size: 394.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for regex-2024.5.15.tar.gz
Algorithm Hash digest
SHA256 d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c
MD5 ae95e2e37bb82641bb852dd5e1b5701f
BLAKE2b-256 7adb5ddc89851e9cc003929c3b08b9b88b429459bf9acbf307b4556d51d9e49b

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: regex-2024.5.15-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 268.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for regex-2024.5.15-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2
MD5 4dc5ba9513bc6f12abc5c35f8f6ebda6
BLAKE2b-256 8bee05f14a99a81f1a897a9146f3f565efb116ad6412f875f52e895c02666825

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-win32.whl.

File metadata

  • Download URL: regex-2024.5.15-cp312-cp312-win32.whl
  • Upload date:
  • Size: 257.3 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for regex-2024.5.15-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe
MD5 22b866929a014e9a5cb41654321a238f
BLAKE2b-256 072a3c22a4aaca4fe952146d147fa3ceb497c048d2dda6f65a43917cb8676cc9

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80
MD5 8db2b1787832a43a025f6456d1214f56
BLAKE2b-256 54439d781f882044011ed9e173ef2857d4f0b9944cd3949db4af7e4ae76703b8

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d
MD5 498894ad8f6b451696f0b26d504d0b07
BLAKE2b-256 a1059bc8484864f082cbedd0beb614689cd56beac357c9e758b4328d9f97a180

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e
MD5 fead039b283a0b325a6a6e46d6fe10cd
BLAKE2b-256 25acef2a2f0592b586e60a3bb4d92e836fdf18f2a31fb42de701fdb6e15e0bf5

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5
MD5 3f63fb7ea3f694fef837bee67ca27731
BLAKE2b-256 edcf181144fd185b9e2b8dc02ded9157bdec534e86dfe2719089a890f9a5652f

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5
MD5 98801610c8fa258621c2a2de3d42a79b
BLAKE2b-256 056b7a8c6a1c4732d5dd24eb7f6724ff39159499737b23a2a908b03239027dd4

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf
MD5 eb5d19dd5b81c3bed614c2af775dc2ed
BLAKE2b-256 9128a187c6eccd980454b668e837df35ad0935989a6b00b9288bc094296bc2f6

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a
MD5 c3537978faf35c65c613fbb4cb991a04
BLAKE2b-256 2267eae3d0f204819212e5da5294c345094f623a2a60d2ff0f81d05048ba0796

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b
MD5 319adc7287901cb7c99a420fb350d629
BLAKE2b-256 891737884a94cbddad4ddd147cc7adc065db092e31a3c9a5b095ed8043e92105

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a
MD5 1ef96b638d0ee674b51ef05c4645c648
BLAKE2b-256 16f5da67226c6760213777afcf04b9b09a50b0c4c3409af2b2fa1d1db1e5af2e

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2
MD5 0917fe21fe5d384c843e1d6bb0760be3
BLAKE2b-256 c0f37f528c4d5190cc0255265df8f64ab102cf33d789f2db801a3f6aac4eb9f8

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49
MD5 a1116e5064111eb7c9474c01e6211019
BLAKE2b-256 23d365db07106b4584b62b1ec0061277c54f565da92d91f0a211057faccb841b

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e
MD5 d96948fd0282ee15b72a0dd0f4bdefac
BLAKE2b-256 08a0cf83a234887261d59320da1f7ba68222d097b0c92169d4db63bb7b8237f0

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014
MD5 489fda2b3feeaf53605b17a2d2c542af
BLAKE2b-256 a58bc691130b860aa5031843b205a2f66127025654bd73b67f4e9ee1bae21dff

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: regex-2024.5.15-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 269.0 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for regex-2024.5.15-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201
MD5 d488dfca8e1e711f0dad60d0f6c4654a
BLAKE2b-256 ef9b0aa55fc101c803869c13b389b718b15810592d2df35b1af15ff5b6f48e16

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-win32.whl.

File metadata

  • Download URL: regex-2024.5.15-cp311-cp311-win32.whl
  • Upload date:
  • Size: 256.9 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for regex-2024.5.15-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa
MD5 9d1614ea3a5cb4845935e177b8c64005
BLAKE2b-256 e4fe9a87e818a2156758b165836e8f4f91b4a192e0bbe9891f7112eefd7348f9

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68
MD5 6c886045773ea1e24e9d341f7ec13e38
BLAKE2b-256 c3eaa4d91ae20f0b46aabfed25a251dfa53aa8ac040bfdca0dfe0476ad755812

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d
MD5 8f5b4f02838819bc6089979d25b7e922
BLAKE2b-256 05593bc9904120829c33badf6ba320e7cbaeed752e40312d9c402c4db822b117

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890
MD5 94f186d9d488d3575c4b834ee7ec7b9b
BLAKE2b-256 a9e1476dd75cfc338ca415adf1a85357f8e8c4d81a01555efa5ceaf6480a6c20

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c
MD5 b0090fd5b4855635fc31681995318aac
BLAKE2b-256 59492fc4ae9039b7f7b0905ea4080c29e64d0880aa4c169862210d0abac675fe

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649
MD5 43a8e4792d494906f28678e448033c4a
BLAKE2b-256 1da4d1f17f6ba68a6a926d067f847289576145aabaa18b9418f6ebc3a85e7881

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f
MD5 08566bd0c2f7b183d4065fe107120230
BLAKE2b-256 39298158a6e69e97b9c72fab0b46fe4d57c789d07ef91fe4afde23721e7cac61

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb
MD5 feb4065257979b91560944790eb99c98
BLAKE2b-256 3f5136aa11beba9c2f3d1598dd40e4b9f7f2e755106e7ab1674d64b526b86d77

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d
MD5 097b6878ac35a0f1caef1d91f6843aaa
BLAKE2b-256 3bc54fea63c46a094d19a14b5b6f5fd4114e6da207ae154c227449d1fadfbf33

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35
MD5 3274ddfd26a93af3ef6f53840e47d2a8
BLAKE2b-256 7dbacbbcdad38b40f1fa36eee1a130051d8e3cd2bd40d3a2a7bce4cf6ff82190

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40
MD5 fd85015b010482acdfd9cf988733e4f9
BLAKE2b-256 f36b60e12bdef54f4d937ffc45a0bdf53ffdc90b604dd170b7eabd603ad6e876

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f
MD5 e540baf8a33136d31868f7eafbf3059a
BLAKE2b-256 c34329ef9c42ae1e764a98510af1c610bf9f4b90a97a04fabe9396d6b73b0cc4

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656
MD5 a203272bef373d58eacca1ba8e9e5373
BLAKE2b-256 2b8b1801c93783cc86bc72ed96f836ee81ea1e42c9f7bbf193aece9878c3fae5

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a
MD5 def854104808bda6f75a91683df57570
BLAKE2b-256 8b3a752689537c98613ea2386784d60f7c791f05eee7a61a02a0ba8aa6c515b4

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: regex-2024.5.15-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 269.0 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for regex-2024.5.15-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145
MD5 d09fc485f5ab4566d5f70b74720d3b1c
BLAKE2b-256 4b743d4e9afeff34c24f64e04f39af6adb5164622d7c02d2fd4f3f18c5ec5148

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-win32.whl.

File metadata

  • Download URL: regex-2024.5.15-cp310-cp310-win32.whl
  • Upload date:
  • Size: 256.9 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for regex-2024.5.15-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3
MD5 bffa3ef1a26b210c0cc442cc5617651f
BLAKE2b-256 4080b3d8ee44f1ea21cf09a0f31d62dfe98c3b499ec6ce8c1b3d0367bf1b7029

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53
MD5 7e0b55e4ff71cd6a47f6587e7e523b47
BLAKE2b-256 ecc4f0a354c710acbf8ff9f6c39059bc9fa1ac811e79a7e52fd24d987917475f

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f
MD5 15db0e45f50ce9c44e40b0ce732cb6f2
BLAKE2b-256 a0ec3e409758345f1bdd8d76a35f73ec051a833087f49fc00ae53c886a9cff01

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f
MD5 ae4b5d0ff6a49f1bcb251a92b49f3214
BLAKE2b-256 1af247105d2ecb07f0e7af4204a46766968314ecb1d663b6db684286ea711344

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143
MD5 530f7b5b33b16737b8de5189018e6ef2
BLAKE2b-256 100c51611b7e8dd2c0dcda321a448aad9ab030aa2a3487c2169c7fb77926a875

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0
MD5 ce2e25f0fd6c6245220f722f9d3219f8
BLAKE2b-256 31c3fadf9028db37fa6baf186a0f6eacd797ff3ea5666d25953f013c8e9f2b4b

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5
MD5 23632605342f86e2f5c8013655702809
BLAKE2b-256 07175d92509b4dccacf9767d8607112c19667e15db2428014440bae4356b8aff

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1
MD5 8c4ca19eac1019e9b1bdfa35a0c3e8c5
BLAKE2b-256 8a7b76ec3c78786ac0997305986e5381970626d8a0e7250849190b6c2297610d

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca
MD5 a9a13b204b5f69223994baa621c7c035
BLAKE2b-256 e984aac4f5d23089b9e7a9ade13fb27fdf30059ed5f8b7e5803f03c52a9ea73e

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7
MD5 d097763300b92fb8b33dc321f6bee7a4
BLAKE2b-256 05420916a746d6a9dcae676df165ff8e6b3d565a3027bfdb854ad92370434bee

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62
MD5 ffd0e034bffd164200a4302ce7f0b839
BLAKE2b-256 cc26737399c7bbf41a40f1b998b3c60bc900d5c8e448bf32e8cef43d88d8013c

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796
MD5 cb5c12c0608e9e8fc2336bba1474aca1
BLAKE2b-256 8907f0bc7cdbf011b4b2d30ebfcf8b44fca0e927128093efcc885dc9a66b9c46

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1
MD5 b8603d9dbde53dc2266f55f37c66d76c
BLAKE2b-256 97d5f2867ce2b016e2bce4f3d2336dd00bd76743131f586e08f816f05111a737

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6
MD5 c2a616fe5cdcdcbad05af9c9bcf3e78f
BLAKE2b-256 b3fe5d5baa25962c287520299a038517b689955307ef1b2b07fbd3044baaeef6

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f
MD5 250d8e2c2940ed757782798c64bc2c86
BLAKE2b-256 92c03560006e0f4f0658a5c5be457102f8d8a9577c31b23c893421da8fbac657

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: regex-2024.5.15-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 269.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for regex-2024.5.15-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388
MD5 7f18f0bfed897f11edf5b4d708346f9a
BLAKE2b-256 66a6e3cdf3119668637749229ac007cbf3065a81931c1dd12e7908b81f55c4b0

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-win32.whl.

File metadata

  • Download URL: regex-2024.5.15-cp39-cp39-win32.whl
  • Upload date:
  • Size: 256.9 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for regex-2024.5.15-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694
MD5 56118b2263ccce14fd437f37f769b1cd
BLAKE2b-256 aea5d44f43b59d3080270356f203773b691493697c84ae3447b02844305bcf76

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456
MD5 d99bed1f64a7a936d73ecadc0cc5947e
BLAKE2b-256 b11d53ad6a26d891bc5afc9f202a164470719c2a11f76c0fff90471aacf870de

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d
MD5 2e20f3fc967f8e98f89e30422268821a
BLAKE2b-256 ae77dd0e2f31f9b342dadaa65cc58e9c572cc145da8923c7ce48adc2da1453d8

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa
MD5 be63e215e6d3dc950480416018fedbe3
BLAKE2b-256 90cbe86c91c0379cf9f1adab16ed51d6770ed8f869bf3da2fd3b04dce135f175

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16
MD5 3a80675a888ea5506c9ea9e141dc2482
BLAKE2b-256 e7bb4183e71603a5d21849d99dfbd9c4f9278e7cf53c0d7eb27a433fd97ad554

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629
MD5 e8007d49ea5dffb7460ef4075ceff880
BLAKE2b-256 0a46d783b478a5710a04bf76fbe058ebac970ccdee6a3b5ba5f43f01aaa48fb1

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4
MD5 03000d528ab9cf76ee2959743239d55f
BLAKE2b-256 936c3d801cd9c4d1e18d155cf55f4f1ec37ed2e0a5b52962d4622ee80032ed3d

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da
MD5 23aeb7873cb483e0a4d4f1a4420a681a
BLAKE2b-256 01c04baffce5d7a4a95e84512f8de9a173cbfbe50604573c02444f5cfbdf5baf

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600
MD5 73e54e8585e627ca7a709856856cea1a
BLAKE2b-256 370dbec14c629e1b59b2d3cd9da11679faf8cd23014a85fc1d7b42e2c3d52f52

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5
MD5 907f2ac494adb0c296299febbd2d56ff
BLAKE2b-256 7070fea4865c89a841432497d1abbfd53878513b55c6543245fabe31cf8df0b8

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294
MD5 5061e3903e56e678b11ae42825440b56
BLAKE2b-256 bb8d75b7da1c42d8df44876a4166040633193e7cc92cb10dacda1489e503084e

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c
MD5 52b55d0f1b189e3b5c252df3892355ab
BLAKE2b-256 778c7592fa2a140732a9ed9db412ebb525d4501551ebcd7d9cf82e9eaef05f21

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435
MD5 ac15c9d396f7d6949276d312d0843e9c
BLAKE2b-256 cfb761364656ac8cf8d8545ae40817152ef156a8b7d6f5e28a2022509ecb7b3c

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1
MD5 2df9bdba63dca6a91c8651511a22c0bf
BLAKE2b-256 cb8369fe4db1ed44f15185da0ddc4fb8381fd01f153669dcab096c44f761229c

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133
MD5 9dbca885da44ed76dbf15462d187d877
BLAKE2b-256 cee76e2d82b6f04c2a1f7f65b17bd67fff8f2691dad92d19c369779f708480fb

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: regex-2024.5.15-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 269.0 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for regex-2024.5.15-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569
MD5 1476b5aa218cd3738d7ff5a0459bd97c
BLAKE2b-256 c2d23e631fdacbbb00bd59fb444487f49b00c74d832606c9dfdb53cf5746b388

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-win32.whl.

File metadata

  • Download URL: regex-2024.5.15-cp38-cp38-win32.whl
  • Upload date:
  • Size: 256.9 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for regex-2024.5.15-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9
MD5 485e46e40ba43fc59e4f5dba07200c70
BLAKE2b-256 1bed32d01086b60313b292d9ae2751eebf27fa08f563452f00bc4908b8720e76

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741
MD5 6e19310f4ef315b5eedfa87d79af3765
BLAKE2b-256 3b1598600377c42050e287ee1f53bd4818d6d8f74443f3777a5ff99a8ff5be64

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67
MD5 9d5736864e3e8183db7ce19e9ee1440a
BLAKE2b-256 e981a5da3fcf035ff88cd259a9875c3ae699826072554bd3287d0f96a61aa8bb

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f
MD5 e40f4fa36354e281aae5a700ffac47d7
BLAKE2b-256 f026355971c03816ffcdefffffd2fd42a8fb29c3894962d03fd1f30bb03ffb8b

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384
MD5 fb27e90a3adb9ad9e74f6e148a6b1f2f
BLAKE2b-256 1dbc8fd1e5dfed6a1b83db338ac206f676ec9c44cdc15563fdd5af17cb52cb5d

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced
MD5 be1eb234f460983ad2f77ac58ce2967b
BLAKE2b-256 84b6d969a07b82fd02b2016f7a6a5bcc9d58d7f3410153b4f770f3cd2aac23e7

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2
MD5 0544ab74bd2c826c173f43a4338f58ab
BLAKE2b-256 eca12542d273818b140a28d26cec2956a0ce8c8ade25de1ed4f515c08593d4ea

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3
MD5 522ef70a77d8b0e104d19488221b1cd0
BLAKE2b-256 31ec34a4cac26b68b41347458fb8a5be8d4fba5c0efb34d44e82cc9fcdda4fe7

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704
MD5 99cac963c8c2f58820a0e49a6f20e69c
BLAKE2b-256 b366b716f4460cf9687a4c18698ad8fb555d8bcc1d571da640c9956d664cd5fb

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb
MD5 4436da5e2a922f527b77c999bb8e812d
BLAKE2b-256 5c46d82e1449ac43f6deb4bd3ee43288b164058974b7ee46065a987f6afa5367

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed
MD5 1c9b6b0bca58703d45aefba90936dde2
BLAKE2b-256 af8c374e49e1d65f240b03cbfca46d244d5cfbd5b48d454ae3d884017b645f59

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa
MD5 3e1317d6a3f6442a16bd8d3a43324c1c
BLAKE2b-256 2aa53efe2da47ec83d6658386f17efcd85359da84a678c672381a0e847a814ae

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9
MD5 29b96286777c8f3c36fa318bb7dd521e
BLAKE2b-256 2bfe6eae410defbe89bdb119c05e40ef494660063a4a25274a6521654eaf1695

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850
MD5 cb1c7382592799f1497e7acedd3906d2
BLAKE2b-256 33c9557fbdce901e61137ac66c4938181d38ba1f012547cd5cc33e0cd54f4f17

See more details on using hashes here.

File details

Details for the file regex-2024.5.15-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for regex-2024.5.15-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835
MD5 ab5a38b87af51253591400a911d7d784
BLAKE2b-256 626dbe8bfdc37c6007f41502ab643194e24b6d05666ada6a1309f881b1fc7e20

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page