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 will follow 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.

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 or V0 flag, or (?V0) in the pattern.

    • 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 or V1 flag, or (?V1) in the pattern.

    • 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 or F flag, or (?f) in the pattern. Please note that this flag affects how the IGNORECASE flag works; the FULLCASE flag itself does not turn on case-insensitive matching.

In the version 0 behaviour, the flag is off by default.

In the 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.

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, FULLCASE, IGNORECASE, LOCALE, MULTILINE, DOTALL, UNICODE, VERBOSE, WORD.

The global flags are: BESTMATCH, ENHANCEMATCH, POSIX, REVERSE, VERSION0, VERSION1.

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.

Notes on named capture groups

All capture 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 of 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 capture 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).

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

Full Unicode case-folding is supported.

Additional features

The issue numbers relate to the Python bug tracker, except where listed as “Hg issue”.

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

The test of a conditional pattern can now be a lookaround.

Examples:

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

Examples:

>>> 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 ((?p)).

Examples:

>>> # 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, but any group definitions within it will be available.

Examples:

>>> 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 capture groups return.

Examples:

>>> 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 now use subscripting to get the captures of a repeated capture group.

Examples:

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

Examples:

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

Examples:

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

Examples:

>>> 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 now be duplicated.

Examples:

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

Examples:

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

Examples:

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

Examples:

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

Example:

>>> 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 capture group.

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

Examples:

>>> 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 capture group is reused, but is _not_ itself a capture 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.

Examples (in Python 3):

>>> 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 ((?e) in the pattern) 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 ((?b) in the pattern) 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 (Hg issue 11)

\L<name>

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.

Examples:

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

Examples:

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

Examples:

>>> 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 of 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 now 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 for groups

A match object accepts access to the captured 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 current (?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: only those known by Python’s Unicode database are supported.)

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 2 letters ‘ab’.

  • The search continues at position 2 and matches 2 letters ‘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 now work backwards:

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

Note: 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 now conforms to the Unicode specification at http://www.unicode.org/reports/tr29/.

Branch reset

(?|...|...)

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

Examples:

>>> 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 (Python 3)

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-2022.7.24.tar.gz (385.0 kB view details)

Uploaded Source

Built Distributions

regex-2022.7.24-cp310-cp310-win_amd64.whl (262.7 kB view details)

Uploaded CPython 3.10Windows x86-64

regex-2022.7.24-cp310-cp310-win32.whl (251.0 kB view details)

Uploaded CPython 3.10Windows x86

regex-2022.7.24-cp310-cp310-musllinux_1_1_x86_64.whl (734.5 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

regex-2022.7.24-cp310-cp310-musllinux_1_1_s390x.whl (757.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ s390x

regex-2022.7.24-cp310-cp310-musllinux_1_1_ppc64le.whl (757.3 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ppc64le

regex-2022.7.24-cp310-cp310-musllinux_1_1_i686.whl (723.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ i686

regex-2022.7.24-cp310-cp310-musllinux_1_1_aarch64.whl (735.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

regex-2022.7.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (765.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

regex-2022.7.24-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (790.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390x

regex-2022.7.24-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (805.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64le

regex-2022.7.24-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (764.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

regex-2022.7.24-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (680.1 kB view details)

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

regex-2022.7.24-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (752.7 kB view details)

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

regex-2022.7.24-cp310-cp310-macosx_11_0_arm64.whl (282.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

regex-2022.7.24-cp310-cp310-macosx_10_9_x86_64.whl (289.7 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

regex-2022.7.24-cp39-cp39-win_amd64.whl (262.8 kB view details)

Uploaded CPython 3.9Windows x86-64

regex-2022.7.24-cp39-cp39-win32.whl (251.1 kB view details)

Uploaded CPython 3.9Windows x86

regex-2022.7.24-cp39-cp39-musllinux_1_1_x86_64.whl (734.4 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

regex-2022.7.24-cp39-cp39-musllinux_1_1_s390x.whl (757.3 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ s390x

regex-2022.7.24-cp39-cp39-musllinux_1_1_ppc64le.whl (756.8 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ppc64le

regex-2022.7.24-cp39-cp39-musllinux_1_1_i686.whl (723.2 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ i686

regex-2022.7.24-cp39-cp39-musllinux_1_1_aarch64.whl (734.5 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

regex-2022.7.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (765.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

regex-2022.7.24-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (789.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ s390x

regex-2022.7.24-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (804.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ppc64le

regex-2022.7.24-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (764.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

regex-2022.7.24-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (679.6 kB view details)

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

regex-2022.7.24-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (752.2 kB view details)

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

regex-2022.7.24-cp39-cp39-macosx_11_0_arm64.whl (282.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

regex-2022.7.24-cp39-cp39-macosx_10_9_x86_64.whl (289.7 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

regex-2022.7.24-cp38-cp38-win_amd64.whl (262.8 kB view details)

Uploaded CPython 3.8Windows x86-64

regex-2022.7.24-cp38-cp38-win32.whl (251.1 kB view details)

Uploaded CPython 3.8Windows x86

regex-2022.7.24-cp38-cp38-musllinux_1_1_x86_64.whl (742.0 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

regex-2022.7.24-cp38-cp38-musllinux_1_1_s390x.whl (761.9 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ s390x

regex-2022.7.24-cp38-cp38-musllinux_1_1_ppc64le.whl (762.4 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ppc64le

regex-2022.7.24-cp38-cp38-musllinux_1_1_i686.whl (727.4 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ i686

regex-2022.7.24-cp38-cp38-musllinux_1_1_aarch64.whl (738.4 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

regex-2022.7.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (768.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

regex-2022.7.24-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (791.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ s390x

regex-2022.7.24-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (807.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ppc64le

regex-2022.7.24-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (766.3 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

regex-2022.7.24-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (685.3 kB view details)

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

regex-2022.7.24-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (755.2 kB view details)

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

regex-2022.7.24-cp38-cp38-macosx_11_0_arm64.whl (282.6 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

regex-2022.7.24-cp38-cp38-macosx_10_9_x86_64.whl (289.8 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

regex-2022.7.24-cp37-cp37m-win_amd64.whl (263.0 kB view details)

Uploaded CPython 3.7mWindows x86-64

regex-2022.7.24-cp37-cp37m-win32.whl (250.5 kB view details)

Uploaded CPython 3.7mWindows x86

regex-2022.7.24-cp37-cp37m-musllinux_1_1_x86_64.whl (726.0 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

regex-2022.7.24-cp37-cp37m-musllinux_1_1_s390x.whl (749.3 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ s390x

regex-2022.7.24-cp37-cp37m-musllinux_1_1_ppc64le.whl (748.4 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ ppc64le

regex-2022.7.24-cp37-cp37m-musllinux_1_1_i686.whl (713.3 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ i686

regex-2022.7.24-cp37-cp37m-musllinux_1_1_aarch64.whl (724.5 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ ARM64

regex-2022.7.24-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (752.0 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

regex-2022.7.24-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl (777.0 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ s390x

regex-2022.7.24-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (790.1 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ppc64le

regex-2022.7.24-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (747.7 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

regex-2022.7.24-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (672.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

regex-2022.7.24-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (738.0 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

regex-2022.7.24-cp37-cp37m-macosx_10_9_x86_64.whl (290.1 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

regex-2022.7.24-cp36-cp36m-win_amd64.whl (274.8 kB view details)

Uploaded CPython 3.6mWindows x86-64

regex-2022.7.24-cp36-cp36m-win32.whl (257.6 kB view details)

Uploaded CPython 3.6mWindows x86

regex-2022.7.24-cp36-cp36m-musllinux_1_1_x86_64.whl (725.0 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ x86-64

regex-2022.7.24-cp36-cp36m-musllinux_1_1_s390x.whl (746.2 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ s390x

regex-2022.7.24-cp36-cp36m-musllinux_1_1_ppc64le.whl (746.6 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ ppc64le

regex-2022.7.24-cp36-cp36m-musllinux_1_1_i686.whl (713.6 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ i686

regex-2022.7.24-cp36-cp36m-musllinux_1_1_aarch64.whl (722.0 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ ARM64

regex-2022.7.24-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (751.1 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

regex-2022.7.24-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl (777.5 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ s390x

regex-2022.7.24-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (790.4 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ppc64le

regex-2022.7.24-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (749.0 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ARM64

regex-2022.7.24-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (672.6 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ x86-64manylinux: glibc 2.5+ x86-64

regex-2022.7.24-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (738.1 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

regex-2022.7.24-cp36-cp36m-macosx_10_9_x86_64.whl (290.2 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: regex-2022.7.24.tar.gz
  • Upload date:
  • Size: 385.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for regex-2022.7.24.tar.gz
Algorithm Hash digest
SHA256 fa8a4bc81b15f49c57ede3fd636786c6619179661acf2430fcc387d75bf28d33
MD5 83a141cb6a4920d49fc8666fc67b3891
BLAKE2b-256 f98c6f8ff4cab5a1c8efd2f71b46b3f3ff7ec0c60389dcb319086b7608ddcbbe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.24-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 262.7 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for regex-2022.7.24-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 74077b462a9b255c5fca247484f46b0f25c32676fe4645cb6b5304b2d997357a
MD5 3c7e2fa6d87481037eb4913e015bc710
BLAKE2b-256 3ffcdc2734e1da1f971c4221abd19210c15dde8ee71bc42bb0f0b8647a871304

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.24-cp310-cp310-win32.whl
  • Upload date:
  • Size: 251.0 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for regex-2022.7.24-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 435c94d5939a7cf4b0af1cce30d196451bae441ebe64f63d08517ab490ceb385
MD5 e787e787f782f46490378a750ea58357
BLAKE2b-256 0e082bac8d4eb490963fff300c3d7f22dbb1098bfeae5e8d75d88a9962ec8ba6

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c7a4dc9436b7a55c36daa3959e92d70337c547651ebeda685dd6bb083f0b77ab
MD5 e31ab2efd9d5b1649961e2ec7142c26e
BLAKE2b-256 441674dc25f5687e5c8e1c4d6a1928d7df29948dfa0126e8c8ad5dc1884d9d17

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp310-cp310-musllinux_1_1_s390x.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp310-cp310-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 0aa48740a1385cb668ffd828a7e2c8078ce29c72d64651c8226bd2b7cb5dba0c
MD5 4efbe7a809022c760d68e29b02235b38
BLAKE2b-256 b8e25fe9c5ba49d0bd9a0c1db82bb04dee0088213114a084ca15a2137fc38949

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp310-cp310-musllinux_1_1_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp310-cp310-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 acf6cbcc19d86f44e8a9d3cf1f6946a71dc55c2ec8ae374c547b1eefd83b954f
MD5 3de24a89279cd63f125a5df349ce52e9
BLAKE2b-256 a1572e8cffe2efae93aab9d2e464a884306006a776f7af36bc2bd14b51c0071d

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 3ff5b2b6a136307a5551e7821d83ab12c46f57c32bf23a27877c9c6bdb55aa61
MD5 07d1cc894db6ef9eae4f65c121a89c3e
BLAKE2b-256 4953c193c209b0b37475f15a2fbead99b84fce2e7da24f87c776b24e5674fc41

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp310-cp310-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 9e297ff33172853e9a9e46dbb0c2ebf44fb38ebefce659698df4eb9dfce0a748
MD5 5fceda8ffed57c3c8aea9cb205d2f7ea
BLAKE2b-256 f0d1bcf907fec53f67f14eeb0697c8c01268187dfc6d5c4978f0d2d04896abf7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8cbc407c44003a1cb4aaa2d48cc19b45dde07ba0ae2f541c6750ad18f8c118f5
MD5 48b16ba625c29f853d492f26d1f86ac6
BLAKE2b-256 201063026cdd9bd7cc3c2db4a27dba7705ec0b1ec4b752fa924215922e111b83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4c0b7c413d4a8a55d72df18acbeb50276eee19cec7e2f54ed3bddc46bc3b3aeb
MD5 f8dfb8eec5291e2cc3d2f15b2c7072db
BLAKE2b-256 7b74e9a865dd0bf63b476e1240447d2a78966ec6414d746617a66642de363681

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 9e64492c8105312f080e25e457db70f9b0d02e6ba3c1ea14468087b0e3aa876f
MD5 4f677af89e7f458dde81125ae212911a
BLAKE2b-256 81e2bf9d8c1715f9ca42ae85c79d1d1ce49b75633e562547c63b7bfd115b35eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dbe2f16a66f64a00dc9ccc0db7f8b5ff014f409840e03675eb431f03b50ddffd
MD5 d2e22edfc41cfa546dbb39475f1d6548
BLAKE2b-256 79dd8dbb7258943a86f69bfe6730b78eb67e2756bf9b93323689cb4e4281fdd2

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-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-2022.7.24-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 86b0cf786efd587c27abd1d07020c555a82275bba3506d916d42aed7a3744967
MD5 ed41c00c03b9d12dc9a95151e612ac6b
BLAKE2b-256 1d100e21571bf5750926eeb8640372b052bc4c502547a61f3cc36881eac84b74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 69120a8fb1eb932b6e3ededb16448be6444eb952f9350c21dddbef947fea5690
MD5 8cb6450715b3ad1b950ead5e25eef42f
BLAKE2b-256 1c0fa7a420d8ec6aff2bcb8bd6b05971a2a58f0fdbdfe9bb1d5c29fc98004b3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2880d21e9507869ab1636e50461afb9ffb08797f1cb76f70d3ad52e7dd13a335
MD5 3e38a18ffd0df6206f8a5b9dfdae197d
BLAKE2b-256 09bbf5ea6bce71809cadb683a960e8345754348e7e86f23e7f16c4bfa600619c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a96826b5c9dc68417ddb29843998473f9c2c047911e6fca36a9f81a898087b01
MD5 2415509a51b9f4d5d281d359b2421d5f
BLAKE2b-256 4b86cfcdc18add41dca15b066cc769575b10066e573bcc7e8a7c96ecd117b8fb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.24-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 262.8 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for regex-2022.7.24-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 df669bacbda209e9b00928f1d00432b27a16c3e051f9f7e5ea306f9b78bf3e7c
MD5 7622d962849324cfa4db602b264f60dd
BLAKE2b-256 c746fa21a7fce413244bd109fdc89171c726e97803dd6c771e30391fb61d14ec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.24-cp39-cp39-win32.whl
  • Upload date:
  • Size: 251.1 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for regex-2022.7.24-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 073bd76a1f03e05a6ca0df705b6117f75b10c340af068b55becb1334fc6426c2
MD5 6d0a8d857a132de66af1b735eb76f7e4
BLAKE2b-256 2a4276821faceb1978d0ccc3f701d91e18c97fd1a951008361895d11e5354032

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 1d1d79a87a33fbd6573e30eb53969a4190035894c4390a0787fb823e9e86b72f
MD5 60e1dec92f8577bc4b311d80546857bf
BLAKE2b-256 46c6c6f38aa86b8db1d905262a882271b9a2bed324f30166b1ef31e84afd8875

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp39-cp39-musllinux_1_1_s390x.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp39-cp39-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 e51ab7fbfe5ac3002b9aee527bcb164b17fd92f5663ebf2a4e5917dd9d577864
MD5 cf220932772c89356dc9f440d13586a1
BLAKE2b-256 c864b783b3f848e1f737b4bdd93bb0fe0faf60dc52bdf7bfe2b4cc6e9fead3a8

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp39-cp39-musllinux_1_1_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp39-cp39-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 53370620db6058dbb464324b053fee8608518d76ff6352b2835d71e2ae8ef293
MD5 3e36c929331641dead8fe81e0fe6a167
BLAKE2b-256 fdc5a6c5b0ce72ab2ad90780808090e0b58cd873d334ffd23801ef7f6904379d

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 fc44c49f33dd75e58b5ff2a5ac50c96c84b6b209d36b4790c85bca08a3b9017d
MD5 29e0f45702a6a1922d7146164ec17a06
BLAKE2b-256 50405950e58f334d88a6359d6b48de6027c36c33dcddcd43646bbd8b0c058686

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp39-cp39-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 045682b6457f0224deb10c9720b8008dc798b1ad4331de9302fd4b615211e5a5
MD5 939e0f9cca9ee237d828182492c15fa2
BLAKE2b-256 52ca6b7fcf40d09c8083c458f93e05da1e94973c3bcfc3fea195badc613acfd5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 869a0f6405ec569863e09909617138af575b5e2bc5181184e60f339a4c8a6d7a
MD5 40f33ef1e5f3f2acd7f3f1cca03e5f3b
BLAKE2b-256 bdfb8509e4288178eba3917b0f42b83587f73e50aebeea19e3b16928bc9c51c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 04e3869fc6fc24b75d38e7547797bb0a82d6cccd49e8ce6ae21a0b87aeb9fac7
MD5 c7cc0d63a4e4fc9fa3420702826b1c29
BLAKE2b-256 e17021eb8166e2394880e6bcb0b646c218ea574981251b1d82b7e5d2bc2aacb5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 1c61175730596266015c4e005c65cbfeeb1ef019ccd024870169c6593a26bdb0
MD5 8e2207af6c3b102d2916aaf569abec58
BLAKE2b-256 493a6f2dd1fde89bf977e63de73acdcd543930d065377a0d12b49ff3151448ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 11965ae779a0ccfb6d17996d531e2f522124e04d98cc65742b96bf8f50758ab9
MD5 f7e9f59f6f41c1095a52684c3ef5e6da
BLAKE2b-256 8e243ad87e4edcbb86a8edd14c0da6e155b0b54104c4a4b7a8c7cf89ecc6d8eb

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-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-2022.7.24-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 cf0a3b9744f94693f3ebcca1c259354f0043c19a4ce938f80ad6d1816b8fd8f0
MD5 be082790a3351ad356dc07983c74a14d
BLAKE2b-256 38eab01bea6c051b9ab0c25e34bb54cdc5e55768d042c67c641b17f6cb6a63c2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a11241808e59deec8314792bbd8a6f0a8a7a95b742709e134c73a3216dbb26ae
MD5 dfe15d6c60f0b25b0633f65953bec736
BLAKE2b-256 c518772de044f27a368cdb8d5642c05e37a5cb8563244e11566935f29dc1d4aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f0bf228c948f543876f4fb310322a4ff7e398667dd58aeb4815dc9e30bf867e
MD5 8bfcb60c74b7093077920ccdb9b74b8a
BLAKE2b-256 5a1522f0a5dd255f5132a370fe1d6cb5539f41c0ee38e8971426042814641a21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 40b4436466d47271fe3b4df63e55307c91a40cda0875a9ff3b7231a08394b283
MD5 8cabfbd9d785717d6a1aeeb25570de35
BLAKE2b-256 e301cca3f0e1c04302f02d7e39ec7ae2f13ce7541e56e34a1326942e9a503cff

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.24-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 262.8 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for regex-2022.7.24-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 2d8b50ae3cbaaa2e5ed89ed81fc025ec64b1a54c4f34e6bdaad9dc63fc2afa6b
MD5 ca3274c0472ffc9e18a0ef9a6280e660
BLAKE2b-256 74f6c3ff7ef890475d9dc71cba19c09c4692ad673f51bfd175f35ac7afd4118f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.24-cp38-cp38-win32.whl
  • Upload date:
  • Size: 251.1 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for regex-2022.7.24-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 95d8f1083ff4546ec14fb46dc41b042d372258f8c319df1e2316d8fe1bd3f085
MD5 121384a1e6f14ac4f09afed14bcd7445
BLAKE2b-256 4003723cd424c0c9fe4824aa477499434f5ce6366cc111ca7d93678229a6c60e

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 204705b7ec16267d39870a19e72e832b12739dc48a26d923a9cb94043660d50f
MD5 2d7cc46d10fe1d71478ac381325c8e7f
BLAKE2b-256 a522c9a02bd8b6061174f9a4e627940001c0eb02617546e23be5ab964c061269

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp38-cp38-musllinux_1_1_s390x.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp38-cp38-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 6019737db5c46a24f307eae5069fced0752e3a22380398bbefbef77b068b9537
MD5 677ac5532fc404facaf62439042413d1
BLAKE2b-256 6d50b4c95c2c51d8e277d156d423098f34837e96e5340e7ce0b1a84325e77a8e

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp38-cp38-musllinux_1_1_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp38-cp38-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 605ca47681c7405723a4970d66d13fa3a3a66efa6b8499d7ab7bce1ddb44a36f
MD5 ce1957a8ea16026f5feddc1112d8b446
BLAKE2b-256 2bd86b4858bda19cbfa19cfaef2a9a2223a46cdd2dfd45cd0828a49910250ee7

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 bf27111f56b762238bd3ce4c5e8ad34167d85dd3c077721a0c093517526a94af
MD5 773c5d3f66269c7f175da204522a8599
BLAKE2b-256 ae4f7a51b8913847706ed77c33fc6e109a51bcd9ad106177914f2ae86961c559

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp38-cp38-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b5a31abc27f9bda7a455bfa1e1bd623da50e3a343a040084c879d07394a93481
MD5 808fc16349b22179a8437f1c4c384b53
BLAKE2b-256 42b3fe3002c55543285282c2e1a5d3579a0d1a7c5448f02a5e7b1650bfd51040

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a55c4d5e5076cc5ece625dd1f7015c9a0818ba1f9ad9db421b495d7ece088e56
MD5 c5bbd439ddd4b22b44b990c39f22bb41
BLAKE2b-256 ac369e97821a92e295847dba71ede18b69d19c7f85b09a8f49d8972ba58102f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 f93e3e5acf82812ea92a1ccdcce690aab18c4044dd824f6b959d2b6069d84312
MD5 6d40b5012b023fc2fa6a90dff5e56334
BLAKE2b-256 0c7af25d5a22cd18e71dde22e643fcd066982e2692877fb2de77dc1468f1cb32

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 deb7b067b3b9751c60dc7f6de68476138d550c074a5016ba944cc55863fa86d1
MD5 84793be436c2837fb1e6afc2d85b9514
BLAKE2b-256 f41554e31a8dbec3e97e623a5e4a4a392a2081a13fcc9121387e7c3646443721

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 53eca0cece2ddb592b8dd9746f0b258d0c8a45f5a3ac8eb96833058f64778fca
MD5 d875ca03162a3a672eaffd34d5a13ab5
BLAKE2b-256 93a98516516fd2e2f020ae88aa2e09937c7e77ee68658758050189c613bc4a18

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-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-2022.7.24-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 a4e1e7ba8c58c1f0b828418f9a2635c0f6344bf107308b8fe65f234a13c8462a
MD5 61ef5bb6338c2aa90bf9d0d5234a559d
BLAKE2b-256 94d9b4df8a0bf9b2fc79153f1484e2d5100d37e346c6d6f8dc3feb2ee6dcf970

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 98dbaf6a86991e2b09f4d8a7669b4304755bda519565971dc3b87ee00fd6eab2
MD5 ec01d54ed6a0fe4c7fdaef80269c8705
BLAKE2b-256 df5d0e11cea623ff622a2324eb2d319a7dc2cf7b4ba58e060b48d7a863507798

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f7006d7c74e25f8bc592604a5a72ba624f10ebd5c0683ab4d3e940a88ac0098c
MD5 55e9ca4ac58e81e0814963de06aa6850
BLAKE2b-256 7cd3bf3b70361500177f8199c827708b282fc3241c46744ebe363943af03a6e1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.24-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c944921b0e77f1923dd89cda65534223ac107e24d71b1dfe174237faa5efd32a
MD5 4b5ced43817e46a6f37ed666efb75ef3
BLAKE2b-256 9265b51d4c44cc45a6d2fd23fd32e99e6d02383f29d602969c2553609d6722a0

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: regex-2022.7.24-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 263.0 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 2026a1c108752e48577f9720076bf6e31a60aaf0c3000fffad4e2527fdffbe95
MD5 6f6d50c7e7a2583b3b8e4e17a18c5076
BLAKE2b-256 a9c09b5ba13414cfd1631f269f08b837b9528085fcdc5899032079e46049e9ff

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-win32.whl.

File metadata

  • Download URL: regex-2022.7.24-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 250.5 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 ca2a7233275acf0087ecd15e5fb0eeb722a1f4de453b49bb1443edf2c2f5a997
MD5 9ae383435614676fccbc104fbc5b8f05
BLAKE2b-256 f018fce15b2796f2b14819b91d03db557f71a7480a83e04fd96aac665970322e

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 97211bae1bc51f153764485a54d8d1130196cae33d02285c33732b26c5328b8d
MD5 1ca5453ae01604719964ee2299c091dc
BLAKE2b-256 419b29b347d135fb469849158eac9e7d050824cdcf5600a43e6ee49131afa302

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-musllinux_1_1_s390x.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 0e380ebd841201f980ab022d07033be12c9438a9b2e0f60324c9e3ba31790918
MD5 64e4ecd6e5120443cb913114efc4af4c
BLAKE2b-256 92978c7701eb8142eb45775d965930022598f335b2ce9df51de0b8f61cc237ba

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-musllinux_1_1_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 e2dd4ca82c2241be9582d2ae060070f2bccb0c98295b608009d5cc6e6041eaed
MD5 8401fa2efedd07319f822d77ce07c0a8
BLAKE2b-256 25165e22f298fb2ee668f1f52e6110d46dc617e6e3ec2c4c4c794bdc89fdbcba

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 817a0618c149d77e493963cd98851ff49d6ab8bcab247fdbf85bb89a14dca5c3
MD5 873ac03b928e1dee0699315a0caf9f98
BLAKE2b-256 b304e712ef1880a5438bb9271994b8943f166499d9d2c8d464b8756a0aa2c844

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 b4be25d3c640a35671431d8ef8cd522319254074b150147fcacad90c91ea42c2
MD5 ed1cf843091c8a64710a0875ea1222ec
BLAKE2b-256 b9d3dd60e224136cef4dbc9718b2de561c9022bc06abfbe37cfc965e6e9b6ef7

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c88a1068ac8e5dc579d5104903fa2c488448c1137e580a77d1438d98070c4243
MD5 c8aaf5c7d4992a8cb5e62532b02b9e6a
BLAKE2b-256 ff9a8cb217151217c619294d6950a5ac992b383f4cd7efe6383c52efc375baf9

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 e4e7f1aba3aaf08e11d33fd5c2d8dd8cbf573049474e11256c91e3ba3d5e1642
MD5 e42496f03c2551e0421a5bd748d96a9d
BLAKE2b-256 5930ace43a971c07d0d76626b5d56f8b7c7684549f13b30efb7bbb6bc766ccd4

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 a6f5cc82e1fa380eb6b8040d626df6ba9f492b6886527f53d59838b11e9caaef
MD5 50bc2c217ad56875f0ceb76c811c836e
BLAKE2b-256 36618dde2ac76074efda98a5dae7b7270ad0c8937bc3d154c03f2d9871823373

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ea00c7f86405d88995e7bab5609e343fdedfe1ffc8191d3b5ed0f8c7f5eb17ec
MD5 cfb8aa94b983f360051efcf0d20e662a
BLAKE2b-256 f2d037017912d190b19085828871fe821a009b8968d19e6872ec7df59334071a

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 27b5011449213dfd880e592ea6d311d00739e87d9512bad507ee18c9c92a20ac
MD5 50e7775ff7e7fcf87cee5cade5079449
BLAKE2b-256 8cfb5c2071ea236856ba9e57fbfabe03dff69dccde2cabab1d67cb8601fe470f

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2d3f9fc885ecd8b0eb248d0e190aa7264b977cc23b6da7c08444065170c57e2e
MD5 4c70ac27cab373323e4a71fdb5d39843
BLAKE2b-256 51cf04b879bd7adfb8b60bbbb64308e40bc2bcf5418d9ea7a8a6cf8065684f61

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bbd542b4afd2ed5491a480e9b15f4bca13e0170ef1895064fd15741382fdebe0
MD5 7a78dbfdf7ac1907e31bfda47269e6e5
BLAKE2b-256 808e145c25351cb4fe0f944d17b0cdfa0f4f22e23a591f096a73d1bab9b98ef6

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: regex-2022.7.24-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 274.8 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 74f0067495a842f7cc198b14031a2893d377bed38e19d785f35095082ab5a556
MD5 8a7b58fd6a894a0bab61d9bc4f8d9f6c
BLAKE2b-256 1d907392f887edf4f5e8ae2ed8d014a9314393ec6ed808084c265f3370de4760

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-win32.whl.

File metadata

  • Download URL: regex-2022.7.24-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 257.6 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 a33c36dcc1760d66f1969d7d3dc8956f45a3d502178053074b8489f67718138f
MD5 5aba4033df9d18ffedd53f7c1e77eee0
BLAKE2b-256 46f91bbc7c9f170b831cb13cc542c8badd7383ebf1c70974b70c21fedeb72111

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 248b16534d1ef8f10a72cda0f97b3dfa25b3d9123a7e726d1594cb07a541bba0
MD5 cdba35f82c52b6f1da945fd0d860ac20
BLAKE2b-256 14e8c9c7e573b56c187e1193b1b4ad64ad7c5a5eb2b413c51b542a45932edb65

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-musllinux_1_1_s390x.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 90e082f262cf858cbcde330999ea5612e12918982033b716d2c5d8b1bc7a01db
MD5 51bb2667d685e5cc7e1e8ae1eab9bd26
BLAKE2b-256 282d25c8cad1b8b5d85e4150db31c4761ff2b959e5e0daaed319300995987f71

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-musllinux_1_1_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 c8cffb5040bf432355cfe51378072f20087609694066ace80710bdba04cf9ce2
MD5 edf3bdfaa53293262eb44791708969e3
BLAKE2b-256 58f6fb17eca320f8b621efecf9d98239f9382750d0e61a3c10b6269ab01041cd

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 72713de336b8d895f91aad34f5591f33d1d8727bd739af3ae2657411ef6e0739
MD5 9bca94adbbdb3df4c355894e54e2d40b
BLAKE2b-256 d4f002ffa46adb68055a035366f169827ac68e69ee571e42b8d4102ee10ef584

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-musllinux_1_1_aarch64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 4f480661cd0809a1177b09581c12c9ceff9ca989e4a0c8c0f10379dffa3b4c4c
MD5 ad0f5a5be6809d107c54b5a5f341116a
BLAKE2b-256 9ad34c447805ae463fe548341d821bf56ddbfe302c6c65ba4626cba7f0dd6484

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4cfe87490d0a801749b42491ef7e968342e5787decbf57d5402fc2c17f7302e3
MD5 405d670f5e642fc68e17ca75be7e8652
BLAKE2b-256 c500c2a2050b654d198ebabd81c03fdc7524e284b70b83ca8d173aef4865ab31

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 10d3a5dda21a125cfdc31e45ae6ce6bdd1e45cb194199801248d6580be8dc337
MD5 ba2565c1b90fad4599fdaf8962547a0c
BLAKE2b-256 8c14041ed5566e930020419938643c8f2b9b29c2b2ead84bbfca77d67cf2c700

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 5751bfe0d939d7110396510a39e48ee928b36b55177207c47766b093886a3945
MD5 6c569551e694077ea386c16431a04697
BLAKE2b-256 2d30897e6624530315e23d03d118de49b206ff56bcfaf89d60bfe91b080396d4

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5d750f99c40a7e994df1cf1295bbb3e873417ca69508664fe9f65db92e46ca40
MD5 df8322dd6051115b445315a2a13a119b
BLAKE2b-256 b759ee984cbc19539e94194285f5f42e001f8f77a56cb7e8819bb4b463f11b97

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 0f9b8ef2e46d627b2a85d3f4fe433ead283c420adcf9461906c3db10766dd3b1
MD5 5ff16d32ebb4f7d374892ffabd718f1d
BLAKE2b-256 ccde4ca443fcd1ee408ab05008db76948e52cf4b927640e1aaae46859a99cf8e

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e432cf909c53506da4c8308753b2671ee37d2d8d1de8b4b54ab76e91ca7ba0b5
MD5 0b02e8a0cbd030adcf56ad05cc256441
BLAKE2b-256 3ee22a2336f1503d4cfd2eecd874add63772e54cbc75e9586c032bdd7e3cdcf9

See more details on using hashes here.

File details

Details for the file regex-2022.7.24-cp36-cp36m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for regex-2022.7.24-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bb812e590e3881a93d4d291270440b3795fa4c0bc1b03ba15fe1cc88d2ea4347
MD5 bd3c19e52d0163e226e7fc0e6598848c
BLAKE2b-256 d924ecd5a26bd373b0fa55bcf480bef2894dc96e5fb3e3c9492b986437a9c10c

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