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.

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 16.0.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?

>>> regex.sub('.*', 'x', 'test')
'xx'
>>> regex.sub('.*?', '|', '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-2025.7.31.tar.gz (407.4 kB view details)

Uploaded Source

Built Distributions

regex-2025.7.31-cp314-cp314-win_arm64.whl (276.1 kB view details)

Uploaded CPython 3.14Windows ARM64

regex-2025.7.31-cp314-cp314-win_amd64.whl (283.0 kB view details)

Uploaded CPython 3.14Windows x86-64

regex-2025.7.31-cp314-cp314-win32.whl (274.5 kB view details)

Uploaded CPython 3.14Windows x86

regex-2025.7.31-cp314-cp314-musllinux_1_2_x86_64.whl (793.9 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

regex-2025.7.31-cp314-cp314-musllinux_1_2_s390x.whl (858.0 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ s390x

regex-2025.7.31-cp314-cp314-musllinux_1_2_ppc64le.whl (867.8 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ppc64le

regex-2025.7.31-cp314-cp314-musllinux_1_2_aarch64.whl (791.1 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

regex-2025.7.31-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (804.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

regex-2025.7.31-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (919.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

regex-2025.7.31-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (873.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

regex-2025.7.31-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (801.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

regex-2025.7.31-cp314-cp314-macosx_11_0_arm64.whl (290.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

regex-2025.7.31-cp314-cp314-macosx_10_13_x86_64.whl (293.5 kB view details)

Uploaded CPython 3.14macOS 10.13+ x86-64

regex-2025.7.31-cp314-cp314-macosx_10_13_universal2.whl (490.2 kB view details)

Uploaded CPython 3.14macOS 10.13+ universal2 (ARM64, x86-64)

regex-2025.7.31-cp313-cp313-win_arm64.whl (273.0 kB view details)

Uploaded CPython 3.13Windows ARM64

regex-2025.7.31-cp313-cp313-win_amd64.whl (279.8 kB view details)

Uploaded CPython 3.13Windows x86-64

regex-2025.7.31-cp313-cp313-win32.whl (269.1 kB view details)

Uploaded CPython 3.13Windows x86

regex-2025.7.31-cp313-cp313-musllinux_1_2_x86_64.whl (794.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

regex-2025.7.31-cp313-cp313-musllinux_1_2_s390x.whl (858.5 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ s390x

regex-2025.7.31-cp313-cp313-musllinux_1_2_ppc64le.whl (867.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ppc64le

regex-2025.7.31-cp313-cp313-musllinux_1_2_aarch64.whl (790.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

regex-2025.7.31-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (804.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

regex-2025.7.31-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (920.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

regex-2025.7.31-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (872.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

regex-2025.7.31-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (801.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

regex-2025.7.31-cp313-cp313-macosx_11_0_arm64.whl (290.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

regex-2025.7.31-cp313-cp313-macosx_10_13_x86_64.whl (293.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

regex-2025.7.31-cp313-cp313-macosx_10_13_universal2.whl (490.1 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

regex-2025.7.31-cp312-cp312-win_arm64.whl (273.0 kB view details)

Uploaded CPython 3.12Windows ARM64

regex-2025.7.31-cp312-cp312-win_amd64.whl (279.8 kB view details)

Uploaded CPython 3.12Windows x86-64

regex-2025.7.31-cp312-cp312-win32.whl (269.1 kB view details)

Uploaded CPython 3.12Windows x86

regex-2025.7.31-cp312-cp312-musllinux_1_2_x86_64.whl (794.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

regex-2025.7.31-cp312-cp312-musllinux_1_2_s390x.whl (858.6 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ s390x

regex-2025.7.31-cp312-cp312-musllinux_1_2_ppc64le.whl (867.1 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ppc64le

regex-2025.7.31-cp312-cp312-musllinux_1_2_aarch64.whl (790.7 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

regex-2025.7.31-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (804.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

regex-2025.7.31-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (920.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

regex-2025.7.31-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (872.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

regex-2025.7.31-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (801.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

regex-2025.7.31-cp312-cp312-macosx_11_0_arm64.whl (290.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

regex-2025.7.31-cp312-cp312-macosx_10_13_x86_64.whl (293.7 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

regex-2025.7.31-cp312-cp312-macosx_10_13_universal2.whl (490.3 kB view details)

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

regex-2025.7.31-cp311-cp311-win_arm64.whl (272.9 kB view details)

Uploaded CPython 3.11Windows ARM64

regex-2025.7.31-cp311-cp311-win_amd64.whl (280.4 kB view details)

Uploaded CPython 3.11Windows x86-64

regex-2025.7.31-cp311-cp311-win32.whl (268.7 kB view details)

Uploaded CPython 3.11Windows x86

regex-2025.7.31-cp311-cp311-musllinux_1_2_x86_64.whl (792.2 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

regex-2025.7.31-cp311-cp311-musllinux_1_2_s390x.whl (854.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ s390x

regex-2025.7.31-cp311-cp311-musllinux_1_2_ppc64le.whl (863.2 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ppc64le

regex-2025.7.31-cp311-cp311-musllinux_1_2_aarch64.whl (787.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

regex-2025.7.31-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (803.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

regex-2025.7.31-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (915.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

regex-2025.7.31-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (867.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

regex-2025.7.31-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (798.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

regex-2025.7.31-cp311-cp311-macosx_11_0_arm64.whl (290.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

regex-2025.7.31-cp311-cp311-macosx_10_9_x86_64.whl (293.1 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

regex-2025.7.31-cp311-cp311-macosx_10_9_universal2.whl (489.3 kB view details)

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

regex-2025.7.31-cp310-cp310-win_arm64.whl (272.9 kB view details)

Uploaded CPython 3.10Windows ARM64

regex-2025.7.31-cp310-cp310-win_amd64.whl (280.4 kB view details)

Uploaded CPython 3.10Windows x86-64

regex-2025.7.31-cp310-cp310-win32.whl (268.7 kB view details)

Uploaded CPython 3.10Windows x86

regex-2025.7.31-cp310-cp310-musllinux_1_2_x86_64.whl (782.5 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

regex-2025.7.31-cp310-cp310-musllinux_1_2_s390x.whl (843.8 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ s390x

regex-2025.7.31-cp310-cp310-musllinux_1_2_ppc64le.whl (853.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ppc64le

regex-2025.7.31-cp310-cp310-musllinux_1_2_aarch64.whl (778.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

regex-2025.7.31-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (790.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

regex-2025.7.31-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (794.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

regex-2025.7.31-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (906.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

regex-2025.7.31-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (859.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

regex-2025.7.31-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (788.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

regex-2025.7.31-cp310-cp310-macosx_11_0_arm64.whl (290.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

regex-2025.7.31-cp310-cp310-macosx_10_9_x86_64.whl (293.0 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

regex-2025.7.31-cp310-cp310-macosx_10_9_universal2.whl (489.3 kB view details)

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

regex-2025.7.31-cp39-cp39-win_arm64.whl (272.9 kB view details)

Uploaded CPython 3.9Windows ARM64

regex-2025.7.31-cp39-cp39-win_amd64.whl (280.5 kB view details)

Uploaded CPython 3.9Windows x86-64

regex-2025.7.31-cp39-cp39-win32.whl (268.8 kB view details)

Uploaded CPython 3.9Windows x86

regex-2025.7.31-cp39-cp39-musllinux_1_2_x86_64.whl (782.0 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

regex-2025.7.31-cp39-cp39-musllinux_1_2_s390x.whl (843.2 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ s390x

regex-2025.7.31-cp39-cp39-musllinux_1_2_ppc64le.whl (852.6 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ppc64le

regex-2025.7.31-cp39-cp39-musllinux_1_2_aarch64.whl (778.1 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

regex-2025.7.31-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (789.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

regex-2025.7.31-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (794.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

regex-2025.7.31-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (906.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

regex-2025.7.31-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (859.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

regex-2025.7.31-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (788.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

regex-2025.7.31-cp39-cp39-macosx_11_0_arm64.whl (290.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

regex-2025.7.31-cp39-cp39-macosx_10_9_x86_64.whl (293.0 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

regex-2025.7.31-cp39-cp39-macosx_10_9_universal2.whl (489.3 kB view details)

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

File details

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

File metadata

  • Download URL: regex-2025.7.31.tar.gz
  • Upload date:
  • Size: 407.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31.tar.gz
Algorithm Hash digest
SHA256 80a1af156ea8670ae63184e5c112b481326ece1879e09447f6fbb49d1b49330b
MD5 7d803e23ff93b26be38936c3e52101bc
BLAKE2b-256 a6369995080bbdabd4683dd11ab54edcf4fc0e2e4ce4d3eea8034b49fa5dd6ef

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: regex-2025.7.31-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 276.1 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 59b94c02b435d7d5a9621381bf338a36c7efa6d9025a888cc39aa256b2869299
MD5 e8c13a2789f25a43e2712b0db24daaf7
BLAKE2b-256 1589c1fa5f4919d86508ccf4955fdc4f4216513aef490dbf4487a1fbe49a8768

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: regex-2025.7.31-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 283.0 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 5792ff4bb2836ca2b041321eada3a1918f8ba05bceac4f6e9f06f0fefa1b8e44
MD5 1515eb33767a9f10ef3fdce2f570dfce
BLAKE2b-256 09a43a84836ccd5f98ff890e913d4d17ea8d0a81fa890a62dd2659cfb7617a47

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-win32.whl.

File metadata

  • Download URL: regex-2025.7.31-cp314-cp314-win32.whl
  • Upload date:
  • Size: 274.5 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 144d7550d13770ab994ef6616cff552ed01c892499eb1df74b6775e9b6f6a571
MD5 55ab404065b3a559c5baea1d0ea7a8ee
BLAKE2b-256 a2889c231044a7578d1d434ed254f43e669031d106aa54a7adace2a8e9f529aa

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b2d5523c236594c055e5752e088406dfe3214c4e986abeceaea24967371ad890
MD5 36b6ab2cf4cbe467ab5141d71351b63b
BLAKE2b-256 a95487b6fb8812c4128acc690c98bfe4c1f9738f292586e5dc101270d99fee02

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp314-cp314-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 74f348e26ff09bb2684c67535f516cec362624566127d9f4158cd7ab5038c1fe
MD5 8a0b76478469686f64b7bd57f99ccd0c
BLAKE2b-256 08daea98eb04bdb22a1a7bdc989ecc2eac9ed2da058c072c512765a43d7a2622

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp314-cp314-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 833292f5ebfbe4f104e02718f0e2d05d51ac43cdc023a217672119989c4a0be6
MD5 a0554877d5e2f232e11f6e877c4019c4
BLAKE2b-256 005870a2c27d3354a5e9d62903164c3015c2df5312e8d6d733d21daa49c553d1

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2348cedab6adee1a7649e2a157d219196044588a58024509def2b8b30c0f63f8
MD5 e346991f6f2a4314ae35fa5198c1c8a8
BLAKE2b-256 5958a06fad8b453663792a69ee76fbefdd63d9ffb3633e930e8eeb69f50e6b48

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8b284b8042d97f4eb9caf4d9423307ee1c9ff9c2abd14c781d44aef070ac7cc9
MD5 99c55b2b3417d9ef0ede25625937151c
BLAKE2b-256 9789d14b863525c58657f4e5674778b596b86744f07642943de5717662fb284e

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 89358d48fbc33614185c18b3a397b870e388f13d882f379b9a33c970a4945dcc
MD5 506a685c6a98c1176f055d00d3eb38b6
BLAKE2b-256 92d236cdd69b8b6396abe7377e917e949e632bbc07bb0fd1cb8ac5b9d2f3558a

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 c7eea6eb0f4c1ff7eee051a6780acc40717be9736bf67873c3c932b7ac5743a2
MD5 7f5520f20262c3ca571af71a42d65aee
BLAKE2b-256 673a6faaa434ce25c14f6fdb2e71888635863927b8126ccbcbb4118241b2af06

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7f6755afaed9948dd4dda4d093663fe60e9a8784993b733697551bf6b0921d7c
MD5 c9fb49fc80207c4f60b146cca5fb5dd4
BLAKE2b-256 20c37cd8da9e99dbe847d65a542a91905663d78b845d8dd18cc1b108ca9167b1

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fccac19e5f1053e4da34ae5a651b938dba12e5f54f04def1cd349b24fd5f28cf
MD5 482c2c8efae1a549db209e9f0830be1e
BLAKE2b-256 4203bae5af21de5a8814ac363626e1e51b17ccfcdc768bb93ac95d8077612118

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp314-cp314-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 81a193e6138b61976903357fc7a67dd9e256cf98f73bbfb2758abf3b8d396c35
MD5 e150a3a543adfe0fcf1f23ed8c5a956b
BLAKE2b-256 3ce855e50fa1c812fcc740e2c576a805cc43456619fe105ccdd43e6f32ca962c

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp314-cp314-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp314-cp314-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 45fd783fd91ec849c64ebd5c0498ded966e829b8d2ea44daba2a2c35b6b5f4a8
MD5 7b3ce8b8f082e17d0f8c13b7cb6f8b74
BLAKE2b-256 16703c9e73135ba5fb28c32e0311f7b2429ba09a2d386150f2e6c035494971e3

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: regex-2025.7.31-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 273.0 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 5560b6c9fb428281b472b665e4d046eaaaf37523135cb1ee3dc699f3e82dae7a
MD5 e9a7c8a56917bb7813d4644e792cefda
BLAKE2b-256 9319a9d2364f6c8fa8b9b6ba7e43493152dbbd59572f7df678404081cd76ea34

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: regex-2025.7.31-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 279.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8ab2d9cd1c13e7127194b5cb36ecfb323fec0b80845195842d8e8ac9fb581e1b
MD5 1cf30e2b3eb9055bf0968763cdb29a54
BLAKE2b-256 513f3ccae0e40a23b01d2d2d5a4a3a603da4ba179e0b761dde3fd000cd5bf368

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-win32.whl.

File metadata

  • Download URL: regex-2025.7.31-cp313-cp313-win32.whl
  • Upload date:
  • Size: 269.1 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 c8ae328524e7bb67ae12a9e314d935e7bb67eb5135e57196b0faa4ecab3f2999
MD5 ba93c95364ef0b4449152094a85b3a31
BLAKE2b-256 f1de7b14566dab3158356e373efce1b14880a1db37e0f110caacd6cf83ed181b

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1a7bedc5b499bd0a5cc05b3407ab0aa09f224fb9cd13c52253ecb1619957a6b4
MD5 852321e63e15a6d545052f347134d9cd
BLAKE2b-256 29e882ce3bffe94c62d49b49bbf0bdeb6a2d7150b840ab081710647e87b9283b

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp313-cp313-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 3bb9bf5a0c1c1c353bc5da6cb58db8a12b1ec76a9e8dc8a23ce56d63ee867392
MD5 ebcda475ddfb78eded2fb0f6d65c012b
BLAKE2b-256 5835e5995aaed1b69242f91a3cc5239fb4e6f000e35eb0a0658e00155dfaf01a

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp313-cp313-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 339d1c579cea1d525ef2b2fefdc1f108596b8252acca6ef012a51206d3f01ac4
MD5 2dd1801334c0df1791df04b1a8463873
BLAKE2b-256 7382ac5a58e038e64418f32a0233c2d238478fb14550d00103b58a3e536c3825

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2784d4afa58a87f5f522037d10cf96c05d3a91ab82b2152a66e8ccea55e703f6
MD5 7059ccb37806e15828e5a4fb931b7947
BLAKE2b-256 df7dde692eacf4f4c5646f01ccd46dbd6142698e23f111792399e132a301d567

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a57aacb1974bd04a5ace8f93c9ab7fa49b868091032b38afd79b2c1ac70da35a
MD5 868b68a965ad8447ac530d0564adc944
BLAKE2b-256 b9c1fec6ca9e248dc9f4b8b0094aa37ee4d4338b1ec243e08508c3f302d7c836

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 ff1359141a378d8fa1ade7ca8a7a94988c830e5e588d232eded0e5900fa953cf
MD5 2d7bba00ea071907b832b70343c99772
BLAKE2b-256 a79366e8a62bdf85cafb865e72c6b47c6cfb3aa37039e1414a361ef214a1f3fb

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 51211fd9bfe544f7ad543a683bd2546636ce5b55ab65752e8f8ebe477378dfa2
MD5 6c8fb03abba632fd1ad99c92bd7a2ce6
BLAKE2b-256 49d221590808aebb0d16cae4fa3bde8c2504da0e1b92ef338e518667fb250203

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cc2939e3e1837822803afebe38f42aab739e1135ea63ba0fdfe499672b21fc39
MD5 fd7c22d61d5eb398988655792b380b34
BLAKE2b-256 b076cf8d44412bef031314a4076d198c794c0a5806536ae3db0e1b5936dea336

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3e58b95f62df0300496a2244ac5818312a80a5f786c9727125d62b49deede1b9
MD5 69582b5dbdb77218a50810232c2592ae
BLAKE2b-256 76f9b347e7a5fa976ba2815a08c952363dc064ec32cde1175d40dfb778451bb3

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 81d865d195f9c94b7e7f043c973a7ee1003b29f6e75caa9125aa5a92cf6b334d
MD5 5b15380767dcff31c15a32b1a5b718fc
BLAKE2b-256 8540c40d3ace6622c5851c4d75d7f2d379b7edf52f9ab86607d6ad1005c11f2f

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 ead2cf9d92f90d2fd7c5eb84b383a82154298742011b8f892fdee2f724f76106
MD5 a92bbed925d704a916f8a03b16d1f19d
BLAKE2b-256 b25c5dc5721af93fd86e4442914ef9bc155baf1d98832313c35ac4e895e5db5b

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: regex-2025.7.31-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 273.0 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 fd454ed1fe245f983c2376b6f01948d6ec4a1e5869a8c883e320e1739cc63e57
MD5 6d69287580108a95efd85921ad4e2cc9
BLAKE2b-256 a190f13eddf7ded8857b51f8d9ebebbc0e862ffb739f2a0f7fcff30a0f95676a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2025.7.31-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 279.8 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 12f9ab65b4cc771dd6d8af806ded7425ca50d2a188d2fc3a5aba3dc49f5684b7
MD5 ca559a53cf28c13d7434f68d74ecf38a
BLAKE2b-256 0d6c703c6c8d4bdf771cf65466d09bd300ca663041a53d30555beca43b26d3dc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2025.7.31-cp312-cp312-win32.whl
  • Upload date:
  • Size: 269.1 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 3ebf32b2b2f60aecd6f8d375ff310849251946cf953aac69b8b5b10e3ccebaf9
MD5 d0caa44b9a6be895de6fda25a3c29a66
BLAKE2b-256 a9055b68b3d392f6158f5ea968f193f3f6271609b8197483809bdf4c2081989b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4723c01dd28c1b1de5f463bba8672e3d0dc3d94d5db056e4bbc3cbc84bf23c1c
MD5 c453360c710ef73b1df3fffbc908b72e
BLAKE2b-256 104af50cd8c4699049513df4d999e1ff61c054304a29e099ed4848de36e52fb7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp312-cp312-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 a7c40ab21112711363d7612f35781c8b2d2d59c27e0a057a6486eea60ee01e54
MD5 b7850678562101cc75884c26e09911bc
BLAKE2b-256 c2b896ce23733a03f6c673ed9dd23766bdbf678c340d6c08016ffde04f53508b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp312-cp312-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 8ae02caf994a0a0d958b9b0fc5aebbdb48fa93491a582dd00db3733d258a6ac4
MD5 828714cea9c6eab21ade6297bd77e40e
BLAKE2b-256 88bdf38a26e98f4f504dc669cbb79e0df3b3eb09a1bcebf8b9eac91f62afc36a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 defab878ce91944baf2ade775895a097ad7eeeab3618d87b4c29753aad98a5c4
MD5 4fda0db07220203ce2f1e3296b4f6347
BLAKE2b-256 2b3657cb185286dc2c63f0e08e68a8f724870a0c7939a9029cb6e14fea159100

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 45622fab3a90590a41a541afea739a732bf110dd081c15c84538b115cf5f59f5
MD5 06c07436bf819d048b5252c4a1508739
BLAKE2b-256 674e7450d9d63edaa6abf7561fdf8ce540d7140bbd9d493328e3852c4bf9222c

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 27f17ade67d06ce4abff48f2ee99c6419f73e70882fe7ca51960916c75844e1f
MD5 f78f9066ea1799a178de71d34939ae04
BLAKE2b-256 094c29083c291e329df4e883304c6d7a99beb6dba9cc31b4f99737cf0a75269a

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 569c2b6812d223ae82a2a13c36362ca5933b88011ba869111eba8fb769ccf492
MD5 6e6afdd97c51eb155523cf90a8c8afeb
BLAKE2b-256 af51f36e6c8fdb62304ed1ba29bbc2d381ecdf37273cc32a4d65a5e64b1fa002

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 52f1925d123338835e5b13e5ef8e6a744c02aef8e538e661ad5c76185e6ad87a
MD5 1a7a7fcbcc66472aacdaebcd932e0dcc
BLAKE2b-256 2f2214dcf80def58a009143ced54665721ff7706440ce93b37bd34a36eebbe24

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 34dcb7c4d89b83e7e3cb5a2679595f6f97d253815ed9402edbdfc56780668b89
MD5 ed6f9acfde9834372f47866750941100
BLAKE2b-256 b69967826894a43447144e610c76a958db9b31318435b04bc21974ccc75fcfce

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 eab98712c0a6d053fb67b021fae43422f7eab8fa2aaa25034f5ef01585112cc7
MD5 b1ac933c1ad19b1d8f8d5b12b97ebc53
BLAKE2b-256 19aa6ad49cb0e7e5c4ba6219b33aacf1b8217ecd4d8ec9c1173d8166b7b6d7b8

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 1af64eed343f19e1f09da9e9e8cfb82570050c4ed9fec400f9f118aab383da4b
MD5 9e1c416ebb9d78b759498461b063fd27
BLAKE2b-256 162a6cde7309f9a90a04b43492eef04893dd551b4284cfbde3650bdab1f2d45e

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: regex-2025.7.31-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 272.9 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 75f74892df1593036e83b48ba50d1e1951af650b6fabbfcf7531e7082e3561d4
MD5 0c4d4f9b56bc3587b996aadf024eae1d
BLAKE2b-256 fc0ca27e089caaef5a393b72cc65f88a6ba23805f72b6c431c19928d2870a3a3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2025.7.31-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 280.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c4f6b34f509bb26507509b6f9ba85debcc6ca512d2d4a6fd5e96b9de2c187c83
MD5 a6a6e02fb30b1c8979c5db6f094fbced
BLAKE2b-256 ec4a5b05e5ff93eb852eec932eb71a7465e4a879a77f9558b2c132af0fcec438

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2025.7.31-cp311-cp311-win32.whl
  • Upload date:
  • Size: 268.7 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 47ceaa1e5eb243595306dfd5e5e294e251900aa94a0e2e1037fce125f432d2fb
MD5 08d69af7a90c9d65dd46753cf81c94c8
BLAKE2b-256 05eb0429111b7493459d3f765cc921d1e2ce1228b049895f3a1cb8525d51526a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e8b4896ec5a9d0ae73d04e260ff6e1f366985b46505b2fa36d91501e4a7a98f0
MD5 096f131e7cc533e1a1a4097ea93018e3
BLAKE2b-256 73cec8e3a31a449145572f9a97960e873546f7f842448dd2a0e68d4f667a77a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp311-cp311-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 481f069facacb4f40bf37a51748a88952f5dd5707dd849f216d53bf5522c8add
MD5 e01d544526acb52d728eecf9bbe9ceb1
BLAKE2b-256 800ea1cae70e3b5e44f5ad5672c1a17011c4ae37250987ce7635c2547c2cc570

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp311-cp311-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 4372ca5c43d0e255e68a9aa6812d9be3447c4ce7ba7cb1429c7b96d2c63ee9b1
MD5 090ee8b874a1c075d56a6654d665e369
BLAKE2b-256 ac307f823c11f9b83f3a6c333a37322aa5867d7983447f8a83a07eccd49bd847

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 02e660c2d02854eed41b13f0e2c98d24efce4fb439aa316742f8d32aeda2803b
MD5 463844bc874ec9f56b37bbc85478a7d5
BLAKE2b-256 cd323daed29302ead90198cdcd1367edaa6913899f3d224c41eddcf8750979cc

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 055baef91bb31474bd919fd245cf154db00cbac449596952d3e6bc1e1b226808
MD5 1c6e178c8294b9a53aafccfb89a306f6
BLAKE2b-256 42afd35718c1ccd68bd2e7b6b26a83c4919516d73610ddf124796797a7858749

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 beda88db2cae5dc82a64cba465f7e8686392d96116f87e664af46c4dfcdd9cbc
MD5 797476bc2fe013ae3b8bb3df939978f6
BLAKE2b-256 f7b8b570626227c257725cd7ecfee07f697850fc45d38df710a13b2b6d681943

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 ca7c9af8f33540b51f1b76092e732b62211092af947239e5db471323ae39ead4
MD5 14c674a5bd47dd16d8851ef0f70671ed
BLAKE2b-256 0d34418288618d3c2e68bbf4be3138bcfa1dd088b869923ea8f0bdac37576fa1

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cbd4ee61dddfcff625f8642e940ba61121b28e98d0eca24d79114209e3e8ce1b
MD5 5fd0d0bf3e8b492dde9db4e246739c0f
BLAKE2b-256 f7db335b829ae5cde7e5de00c0576d899e180605f8c8befee9d58e014d49d4f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 622aa4ca90d7cf38433d425a4f00543b08d3b109cca379df8f31827cf5e2ecb3
MD5 49c87e9e7376c3c0981a847c5bc143c8
BLAKE2b-256 817a8b7b102bc524c3bf8eb3389afcdc381f47cff95a05c5370803e6fd5dfe44

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c8ff37cac0e1c7ba943bf46f6431b0c86cbe42d42ae862ff7b152b4ccc232bdd
MD5 f2f511d24eea5e40e676cfb553a05c10
BLAKE2b-256 85752e738c69d43c086514f687f0d73a8cdc089e6823ad83192d2f6b2cf2b0c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 55dc9f4094656d273562718d68cd8363f688e0b813d62696aad346bcd7b1c7d4
MD5 c0c30066e5f45fad1407e18538451026
BLAKE2b-256 eda785a371e31fb4f675593e0f731f89c54423e0b98d02a3e580fde206ba763b

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: regex-2025.7.31-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 272.9 kB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 7ddc7ab76d917cb680a3b0fa53fc2971d40cc17415539007e15fa31c829dcf2b
MD5 958bc5abd924a1a77ebe8affc820f989
BLAKE2b-256 ba544e598d171a32a67cf7b3912ded0b71dcbab30235f293963c6021359c1233

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2025.7.31-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 280.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 77be56e167e2685828ab0abc1bdf38db3ab385e624c3ea2694b0d4ea70a2b7bc
MD5 9d4ea57df810f9d845871cbc2104091b
BLAKE2b-256 bbae9b0c128ef88c3068f949025f6671261e504c6e586f9138309705b82524ee

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2025.7.31-cp310-cp310-win32.whl
  • Upload date:
  • Size: 268.7 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 8542ee1fd8c8be4db1c58902956a220bdbe7c38362decec989f57ace0e37f14c
MD5 f6cd3f6ef3e07b26bd1fcb8b99b13dae
BLAKE2b-256 5ffcaa19a1eba4168922d3e6e66671380b86a3841a2a8f6a54ecdcf217424e88

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3fe81cd00ef1eaef1ef00d61200bacb55b1a130570cd9be2e793b98981c6cd9c
MD5 82da16c3c2461474b8f1898730c2c77c
BLAKE2b-256 5182b193e9a4afdb982d39edbb5c2e245a7af2b2e3963c32265fcf2d960b0008

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp310-cp310-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 67d708f8bfb89dcd57c3190cb5c343c7f40d3c81319a00c8188982a08c64b977
MD5 8699a61244dbb0910a104b2949ecba03
BLAKE2b-256 5a575281baa48d9f25fc7f48f5c216c3825ae5b29c11b0c016535ae3f493b9df

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp310-cp310-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 de088fe37d4c58a42401bf4ce2328b00a760c7d85473ccf6e489094e13452510
MD5 85196b1402bd5a4793c83e521bf83490
BLAKE2b-256 56a84b0db3eb6d4dbbc10777f20831fde816137a2a5737498c4c7f715e29f2f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ff7753bd717a9f2286d2171d758eebf11b3bfb21e6520b201e01169ec9cd5ec0
MD5 7db3dac6efa13746a0ff28d030cdde45
BLAKE2b-256 5cbc5b976ca504f2fabb340600bad426e530a25f2c0109c009834af42d5cfd33

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 407da7504642830d4211d39dc23b8a9d400913b3f2d242774b8d17ead3487e00
MD5 dcdee31951f8e1a6b1407eadc92f3be5
BLAKE2b-256 dfe63f25e64d853ca18151016329963f9e3a2c9d43f1bf36e172b23bf4e1a6bb

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f67f9f8216a8e645c568daf104abc52cd5387127af8e8b17c7bc11b014d88fcb
MD5 244eeb7f28c3c5dc820ab04f6ecdc1c2
BLAKE2b-256 b928f81b34d07c70dcd988b9bb124d47ae06c591bcabc2b703b601a61d39528c

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 2dadf5788af5b10a78b996d24263e352e5f99dbfce9db4c48e9c875a9a7d051c
MD5 75983ff159c52a2666290eff2a824e67
BLAKE2b-256 36f9b6454bedb3af4ae4aba3fdf54d6476872303b63c3d93d3dfc88b43c43334

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 6f970a3e058f587988a18ed4ddff6a6363fa72a41dfb29077d0efe8dc4df00da
MD5 696df626ee0d8d26357ece475337fd86
BLAKE2b-256 8bf310f827814b9d130c9f9e41bd4378b2386e6dd25e8a4c69837692f28db829

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ea5b162c50745694606f50170cc7cc84c14193ac5fd6ecb26126e826a7c12bd6
MD5 f390330b979125509c1001bdbf65ed9c
BLAKE2b-256 226129f8152131ac78545a4382e14747246b9727ed9467f4f28becb6e97d7c2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f124ff95b4cbedfd762897d4bd9da2b20b7574df1d60d498f16a42d398d524e9
MD5 21a39e7c2b192c8846f8ac8c6425dfdc
BLAKE2b-256 e0c7dfdc769cfa01258f3ded76fd3e34d7aad9e96862513adccbdb2a7d02342f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f6aef1895f27875421e6d8047747702d6e512793c6d95614c56479a375541edb
MD5 b0cac5eeb4002359888cbcdb69c9364d
BLAKE2b-256 9dfc0fd637c648eb7b14cef655266129428fc23e0ceb0a14f5d816ba5e0b76f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b40a8f8064c3b8032babb2049b7ab40812cbb394179556deb7c40c1e3b28630f
MD5 a03811e9e00fbbeb576a25d52da2c7b3
BLAKE2b-256 033051cf963b5acdb63f3c8e80c4129db3a997f2508e18bf8afc8696fb7408ab

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp39-cp39-win_arm64.whl.

File metadata

  • Download URL: regex-2025.7.31-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 272.9 kB
  • Tags: CPython 3.9, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 c28c00fbe30dd5e99162b88765c8d014d06581927ceab8fa851267041e48820c
MD5 cbab1ad43cc2ee5fd3d33a86430ea993
BLAKE2b-256 0b7c3e274b86eb7ea686edc76faaa2d183bc716a325fa19605cd0b758e43b412

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2025.7.31-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 280.5 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 097c2adaedf5fba5819df298750cd3966da94fdd549e2d9e5040d7e315de97dd
MD5 04be3d87895b1c0c3f78b12e6bb504fa
BLAKE2b-256 df85ee8ef31713906b462b3476f25f9a08e979081f0967daa4b46efb10395f27

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2025.7.31-cp39-cp39-win32.whl
  • Upload date:
  • Size: 268.8 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for regex-2025.7.31-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 f7858175abee523c5b04cc1de5d3d03168aed4805aad747641752c027aaa6335
MD5 e6aa49e74cdca1a9b59809f587504924
BLAKE2b-256 4fdf119329e6498215dca213e5fec9ea8fcd1c72456a214a2f4bd674870293fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 261f9a6dcb1fd9dc204cc587fceac2e071720a15fc4fa36156651c886e574ad0
MD5 5b5fa0d50260a154879c42f3ecce6d90
BLAKE2b-256 5dc24db350387f9a0683bc54abc97c99ea487febbeaa24560742f76ab8929dcd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp39-cp39-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 019ad36e4ea89af6abd2915ffc06b4e109234655148a45f8f32b42ea9b503514
MD5 9286b6f0352836972dd9022623822684
BLAKE2b-256 fe6ea480bac67318effc7b533e11fc51f6201f1f444d495e91930ac2524cee10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp39-cp39-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 46572b60e9cc5c09e17d5ecb648dc9fb1c44c12274ae791921350f0f6d0eebea
MD5 35f2e37afb75ba53ab33692d97ab33a7
BLAKE2b-256 7405c7ab62e1f0972875e91501acc7c0a72e2ee287ded9c459aaae0b25bf1797

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b2b0f700237b73ec0df2e13e2b1c10d36b8ea45c7a3c7eb6d99843c39feaa0e6
MD5 95e9384f2f9d259483cce2f96adf632f
BLAKE2b-256 63d738607e64517ce8ce63377cfc8db64e79920fe90759558d2f567994b9fc41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 cc9eb820140126219ac9d6b488176cfdde2f5e8891b0fbf2cbd2526c0d441d37
MD5 9fc1228c99071a516e151b78500df7e2
BLAKE2b-256 f5c6d358bfdffee61ad985e16bef01aff4373fb8149e1d685b95e66c89414860

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 60162442fd631ead1ca58c16f6f9d6b1aa32d2a2f749b51a7b4262fc294105e1
MD5 5e0c0b7c4774c577089a17b493db0f7f
BLAKE2b-256 9ff5666345a14c0c7d2c746de46544e035e7b0c677b2fa5605b349cc12687090

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 1778b27e2d4e07cf1e3350f1e74dae5d0511d1ca2b001f4d985b0739182ba2a8
MD5 5ebb5ece432f30687360af42f608c00d
BLAKE2b-256 e30761308740b9e0913d8b21bafc6ecc7bbc99853213261b4522caa2d07121ba

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 56508bf5da86c96b7f87da70ee28019a1bdd4c0ec31adfcd62300c4a08e927e4
MD5 672abbd35a69779caa73b954e9e71d16
BLAKE2b-256 9c3a7803b6f8290121f90815769b0c2aa3b052434d25886c28d3944b17e739fe

See more details on using hashes here.

File details

Details for the file regex-2025.7.31-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for regex-2025.7.31-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3b1329dcb4cd688ebabd2560d5a82567e1e3d05885169f6bece40ca9e7dcfe3d
MD5 05b5ce7b21e0d4a4e8cb2f6295524ed1
BLAKE2b-256 0bac957787d84c0c429447b73bce574f844daab2990113338abc0c4f86665f28

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1282de93a20d143180bd3500488877d888185a5e78ef02f7cd410140299f0941
MD5 e68034343a76580ed0b326eb09872ffc
BLAKE2b-256 164e62e58ed9b69329e7b76a76ff2d94750a591c340eeabe7657f4778e7da787

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1b600ff5e80d2b4cf2cabc451dab5b9a3ed7e1e5aa845dd5cf41eabefb957179
MD5 0db1d988230064f6629b1647d72f4ce2
BLAKE2b-256 413ac1758519ebdf1b634846ee8bf0eb9663bc96034c26fabc664f9a1d9e8b8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2025.7.31-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 ac97385aadafe3a2f7cb9c48c5ca3cabb91c1f89e47fdf5a55945c61b186254f
MD5 2be0d8d299d3d2bbe612761cdd9604bd
BLAKE2b-256 2c2806a0b82636990ff7148276b09cf47d1030409261af3feb5528ed9c997e9c

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