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

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({'fifth', 'first', 'fourth', 'second', 'third'})}

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:\Python37\lib\site-packages\regex\regex.py", line 348, in compile
    return _compile(pattern, flags, ignore_unused, kwargs)
  File "C:\Python37\lib\site-packages\regex\regex.py", line 585, in _compile
    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)
>>>

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:\Python37\lib\site-packages\regex\regex.py", line 276, in sub
    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.9.tar.gz (383.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

regex-2022.7.9-cp310-cp310-win_amd64.whl (262.1 kB view details)

Uploaded CPython 3.10Windows x86-64

regex-2022.7.9-cp310-cp310-win32.whl (250.5 kB view details)

Uploaded CPython 3.10Windows x86

regex-2022.7.9-cp310-cp310-musllinux_1_1_x86_64.whl (733.3 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

regex-2022.7.9-cp310-cp310-musllinux_1_1_s390x.whl (756.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ s390x

regex-2022.7.9-cp310-cp310-musllinux_1_1_ppc64le.whl (756.0 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ppc64le

regex-2022.7.9-cp310-cp310-musllinux_1_1_i686.whl (721.5 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ i686

regex-2022.7.9-cp310-cp310-musllinux_1_1_aarch64.whl (732.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

regex-2022.7.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (764.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

regex-2022.7.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (788.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390x

regex-2022.7.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (801.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64le

regex-2022.7.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (761.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

regex-2022.7.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (678.0 kB view details)

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

regex-2022.7.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (752.6 kB view details)

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

regex-2022.7.9-cp310-cp310-macosx_11_0_arm64.whl (281.9 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

regex-2022.7.9-cp310-cp310-macosx_10_9_x86_64.whl (289.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

regex-2022.7.9-cp39-cp39-win_amd64.whl (262.1 kB view details)

Uploaded CPython 3.9Windows x86-64

regex-2022.7.9-cp39-cp39-win32.whl (250.5 kB view details)

Uploaded CPython 3.9Windows x86

regex-2022.7.9-cp39-cp39-musllinux_1_1_x86_64.whl (733.1 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

regex-2022.7.9-cp39-cp39-musllinux_1_1_s390x.whl (756.2 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ s390x

regex-2022.7.9-cp39-cp39-musllinux_1_1_ppc64le.whl (755.5 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ppc64le

regex-2022.7.9-cp39-cp39-musllinux_1_1_i686.whl (720.9 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ i686

regex-2022.7.9-cp39-cp39-musllinux_1_1_aarch64.whl (731.5 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

regex-2022.7.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (763.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

regex-2022.7.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (787.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ s390x

regex-2022.7.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (800.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ppc64le

regex-2022.7.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (761.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

regex-2022.7.9-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (677.4 kB view details)

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

regex-2022.7.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (752.0 kB view details)

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

regex-2022.7.9-cp39-cp39-macosx_11_0_arm64.whl (281.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

regex-2022.7.9-cp39-cp39-macosx_10_9_x86_64.whl (289.1 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

regex-2022.7.9-cp38-cp38-win_amd64.whl (262.1 kB view details)

Uploaded CPython 3.8Windows x86-64

regex-2022.7.9-cp38-cp38-win32.whl (250.5 kB view details)

Uploaded CPython 3.8Windows x86

regex-2022.7.9-cp38-cp38-musllinux_1_1_x86_64.whl (740.2 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

regex-2022.7.9-cp38-cp38-musllinux_1_1_s390x.whl (760.5 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ s390x

regex-2022.7.9-cp38-cp38-musllinux_1_1_ppc64le.whl (761.7 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ppc64le

regex-2022.7.9-cp38-cp38-musllinux_1_1_i686.whl (725.3 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ i686

regex-2022.7.9-cp38-cp38-musllinux_1_1_aarch64.whl (736.7 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

regex-2022.7.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (765.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

regex-2022.7.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (790.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ s390x

regex-2022.7.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (805.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ppc64le

regex-2022.7.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (764.8 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

regex-2022.7.9-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (683.7 kB view details)

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

regex-2022.7.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (753.0 kB view details)

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

regex-2022.7.9-cp38-cp38-macosx_11_0_arm64.whl (281.8 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

regex-2022.7.9-cp38-cp38-macosx_10_9_x86_64.whl (289.2 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

regex-2022.7.9-cp37-cp37m-win_amd64.whl (262.1 kB view details)

Uploaded CPython 3.7mWindows x86-64

regex-2022.7.9-cp37-cp37m-win32.whl (249.7 kB view details)

Uploaded CPython 3.7mWindows x86

regex-2022.7.9-cp37-cp37m-musllinux_1_1_x86_64.whl (724.3 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

regex-2022.7.9-cp37-cp37m-musllinux_1_1_s390x.whl (745.4 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ s390x

regex-2022.7.9-cp37-cp37m-musllinux_1_1_ppc64le.whl (745.6 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ ppc64le

regex-2022.7.9-cp37-cp37m-musllinux_1_1_i686.whl (711.9 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ i686

regex-2022.7.9-cp37-cp37m-musllinux_1_1_aarch64.whl (721.5 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ ARM64

regex-2022.7.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (749.7 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

regex-2022.7.9-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl (775.1 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ s390x

regex-2022.7.9-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (788.0 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ppc64le

regex-2022.7.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (746.2 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

regex-2022.7.9-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (671.0 kB view details)

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

regex-2022.7.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (736.8 kB view details)

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

regex-2022.7.9-cp37-cp37m-macosx_10_9_x86_64.whl (289.5 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

regex-2022.7.9-cp36-cp36m-win_amd64.whl (273.9 kB view details)

Uploaded CPython 3.6mWindows x86-64

regex-2022.7.9-cp36-cp36m-win32.whl (256.9 kB view details)

Uploaded CPython 3.6mWindows x86

regex-2022.7.9-cp36-cp36m-musllinux_1_1_x86_64.whl (723.4 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ x86-64

regex-2022.7.9-cp36-cp36m-musllinux_1_1_s390x.whl (744.7 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ s390x

regex-2022.7.9-cp36-cp36m-musllinux_1_1_ppc64le.whl (745.1 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ ppc64le

regex-2022.7.9-cp36-cp36m-musllinux_1_1_i686.whl (712.4 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ i686

regex-2022.7.9-cp36-cp36m-musllinux_1_1_aarch64.whl (720.8 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ ARM64

regex-2022.7.9-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (749.3 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

regex-2022.7.9-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl (774.7 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ s390x

regex-2022.7.9-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (787.4 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ppc64le

regex-2022.7.9-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (746.9 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ARM64

regex-2022.7.9-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (671.2 kB view details)

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

regex-2022.7.9-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (737.4 kB view details)

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

regex-2022.7.9-cp36-cp36m-macosx_10_9_x86_64.whl (289.7 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: regex-2022.7.9.tar.gz
  • Upload date:
  • Size: 383.4 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.9.tar.gz
Algorithm Hash digest
SHA256 601c99ac775b6c89699a48976f3dbb000b47d3ca59362c8abc9582e6d0780d91
MD5 7857d00b36dfdc1ad7727ebe7d57fe45
BLAKE2b-256 52b148941b5df2d73a14e067e68d9055544effc515c8242741fd7c1dd2d72101

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.9-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 262.1 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.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 667a06bb8d72b6da3d9cf38dac4ba969688868ed2279a692e993d2c0e1c30aba
MD5 6ed74b6c1252dab21538ab37af751008
BLAKE2b-256 13966cf2f56e1b5644fa0240b173f81345860db9d3185cf916da3f5b127c3822

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.9-cp310-cp310-win32.whl
  • Upload date:
  • Size: 250.5 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.9-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 2e5db20412f0db8798ff72473d16da5f13ec808e975b49188badb2462f529fa9
MD5 d1f1a67f6aec8cfd9b379fa87b35bd18
BLAKE2b-256 b36342b131bdcf7ff71993f94917a0933c54810a72f66fa839f758840aa1a59d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d2672d68cf6c8452b6758fc3cd2d8feac966d511eed79a68182a5297b473af9c
MD5 b31833d9e0c41d420f221aca40267ed4
BLAKE2b-256 cdb2d0c684be56d1ff28f149835aa6944ea706b9755bb18ad3708f0f3ada3f2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp310-cp310-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 402fa998c5988d11ed34585eb65740dcebd0fd11844d12eb0a6b4be178eb9c64
MD5 1f1f3f01c913dcc66f7fe9e532900159
BLAKE2b-256 b7a4188c8ec569233d77324ddd2b2130d51dc71ab1ef0e1f453e72fb5b1ce42c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp310-cp310-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 0c1821146b429e6fdbd13ea10f26765e48d5284bc79749468cfbfe3ceb929f0d
MD5 b61b3fccc287dd18b6e2f500fdf49649
BLAKE2b-256 e1c15f9752b44f47684eb0c7ff65219a52b782277f330201ea99da9ad6d524b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 9e4006942334fa954ebd32fa0728718ec870f95f4ba7cda9edc46dd49c294f22
MD5 942a9d23a55a98ba336d54bd683d2d59
BLAKE2b-256 4bac0cc4abb83680865e228c95df3192ef442097ae99720a28c26416d54ab1a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 414ae507ba88264444baf771fec43ce0adcd4c5dbb304d3e0716f3f4d4499d2e
MD5 4d511321386c8a9bb847c8ca7142f6bc
BLAKE2b-256 45f08c8448ba882ff7f0d3edf660960f88b7b8bd7ecb7104c04226097ca84e94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f94b0befc811fe74a972b1739fffbf74c0dc1a91102aca8e324aa4f2c6991bd
MD5 440c5d3613dc4eb1ffe8bfe8a0afefe2
BLAKE2b-256 ae8920230a664ec1e5c67cb4e7e27aea54e112761f55de645b9119b37b9fa927

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 06c509bd7dcb7966bdb03974457d548e54d8327bad5b0c917e87248edc43e2eb
MD5 5df964f0fa69bb13f1dec7d0f2fde37c
BLAKE2b-256 abdb7a291b318072111b64ac8d5cbf412832335509ece895f8d5e497494101ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 18e6203cfd81df42a987175aaeed7ba46bcb42130cd81763e2d5edcff0006d5d
MD5 0a7847c37eb488445697b5ab6e31fed3
BLAKE2b-256 8384849088de086f1dc9cbf8a585b535c4af384a7d5f8a7f0489fa24463f3768

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 727edff0a4eaff3b6d26cbb50216feac9055aba7e6290eec23c061c2fe2fab55
MD5 09a0bf5ccbfed94afa3fcad15d08bd18
BLAKE2b-256 acdd5fda8137a6941c8ab2d1826e9a34f2e6130ae18a5bbec2596c55dcc2e447

See more details on using hashes here.

File details

Details for the file regex-2022.7.9-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.9-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 d40b4447784dbe0896a6d10a178f6724598161f942c56f5a60dc0ef7fe63f7a1
MD5 91583df6c46f610126bb5a6bfb0a5d8c
BLAKE2b-256 4d942f62f0034e9bbf793443826d05dbd4721202bcf1f6ccae063c4956ed9f0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 121981ba84309dabefd5e1debd49be6d51624e54b4d44bfc184cd8d555ff1df1
MD5 aa0bdbd01409007995f1ca927b719833
BLAKE2b-256 07d852190e6635505278cecc461d9ecb1b2cf533c2b2a0bb21e9691fa259a74a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 12e1404dfb4e928d3273a10e3468877fe84bdcd3c50b655a2c9613cfc5d9fe63
MD5 03a0faf977f0fe5fc318785233d870b8
BLAKE2b-256 516bd7b6bbba78b01394640d5fbecbc9382856ed73c035611b695ecce85f1a63

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d35bbcbf70d14f724e7489746cf68efe122796578addd98f91428e144d0ad266
MD5 7f70784f07ec03d5e755af1d0f6ce522
BLAKE2b-256 dc57e5a25fc7202d0569de5f85cd156a87431d45e4ccfd714bdef5cf4fbb8683

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.9-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 262.1 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.9-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0a3f3f45c5902eb4d90266002ccb035531ae9b9278f6d5e8028247c34d192099
MD5 ff8a70b4f83e0e6c37c1ca12a78d06cc
BLAKE2b-256 fc1f0e46eb22ab827b2d0630eadb208f98469b99d60a13b18655864dbf8f6b1e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.9-cp39-cp39-win32.whl
  • Upload date:
  • Size: 250.5 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.9-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 49fcb45931a693b0e901972c5e077ea2cf30ec39da699645c43cb8b1542c6e14
MD5 1d87acd3233822ccf21030b6786aab16
BLAKE2b-256 552f7f87a55bc63e557202b11801dfbe231b3ab0270a4ddeec13e3c9aa102214

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 206a327e628bc529d64b21ff79a5e2564f5aec7dc7abcd4b2e8a4b271ec10550
MD5 19d46592a63aeb8b8df9ef1c309b9d8f
BLAKE2b-256 411629484547f445bb9972c88b6fb6cddf13b01cf6b4d4606a41e6ca23d6f1fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp39-cp39-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 d07d849c9e2eca80adb85d3567302a47195a603ad7b1f0a07508e253c041f954
MD5 08a92f80df815905de2f8ce90d72ee96
BLAKE2b-256 4759f3163053b6f2170cf253c8fb9998fd640c150035dd88bfdbc1fe0c44ee76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp39-cp39-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 162a5939a6fdf48658d3565eeff35acdd207e07367bf5caaff3d9ea7cb77d7a9
MD5 1aa5eb5e8cc3c4ee92a52c7cca4832ec
BLAKE2b-256 ff6381bf6ec933e3e6226fa0c5b601f551301d111e5425680ed9bb03b0681e69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 e2a262ec85c595fc8e1f3162cafc654d2219125c00ea3a190c173cea70d2cc7a
MD5 6aa8c7241953da78331d24e67f275c9c
BLAKE2b-256 7f8660b7a1ed442fe3e83c7b0f99148d8e1d75051097bbfc705b056a78ef047e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 7d462ba84655abeddae4dfc517fe1afefb5430b3b5acb0a954de12a47aea7183
MD5 15c145e816773c88c72c2a650cf24fa4
BLAKE2b-256 002d066a2791ef2507fccd7ad3b3d7c6dd0b2e8c12a590947f52185344ece69d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f87e9108bb532f8a1fc6bf7e69b930a35c7b0267b8fef0a3ede0bcb4c5aaa531
MD5 82a4618aec087a63d95c05f6ab4f7a03
BLAKE2b-256 c83e7140e49d5d7750929e78eb05b7cd151400263d914ed0a6a3571480cc178a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 f32e0d1c7e7b0b9c3cac76f3d278e7ee6b99c95672d2c1c6ea625033431837c0
MD5 d75eff68e083e7c03f307709e4c712a9
BLAKE2b-256 a71beb88eaa24ee3353ce93c6f1fcb7e43782ab8a9f8781f69a16c4d702142ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 e2fc1e3928c1189c0382c547c17717c6d9f425fffe619ef94270fe4c6c8be0a6
MD5 a5a3bbbcd81401897e052aa36c7b2192
BLAKE2b-256 3d63c23dad98bddf77b02959a3aa5b9a2490c8f97ee50599349fde131df9581f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dce6b2ad817e3eb107f8704782b091b0631dd3adf47f14bdc086165d05b528b0
MD5 308d1f0ffdafaa828bcfa067e4536306
BLAKE2b-256 3eabfc355556fb39fdd4eeed7741a431f39626d634f69c8c2932bee8ce02d69a

See more details on using hashes here.

File details

Details for the file regex-2022.7.9-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.9-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 a6d9ea727fd1233ee746bf44dd37e7d4320b3ed8ff09e73d7638c969b28d280f
MD5 c3534d97c6fa8a9793dd44cf85370891
BLAKE2b-256 c385a4a9109a2db5de0ebdf41ceb194a1cb675cb5cfcdb20e020d41e4788ee24

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 303676797c4c7978726e74eb8255d68f7125a3a29da71ff453448f2117290e9a
MD5 fb1d8f9acb7e38352babc44ef5e28cfb
BLAKE2b-256 7d5c1f14d448ad5ffa3a1fdcb2121e7f8acc91e88b2260afdfac90b9f01ba77b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 192c2784833aea6fc7b004730bf1b91b8b8c6b998b30271aaf3bd8adfef20a96
MD5 5a9598c1e033435c5def25d6fff01aea
BLAKE2b-256 a1389a5f12164ecd43412325ce0ece3be0702644090b6107e70ff05ccf0b55c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 473a7d21932ce7c314953b33c32e63df690181860edcdf14bba1278cdf71b07f
MD5 bcd7441edc9e55d7d8cb09f638b3209c
BLAKE2b-256 b59ca4e6b513dd33a93d2f5b2ec306dadfec17bb541bcf055a61e98d89bd01d2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.9-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 262.1 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.9-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 9f1c8fffd4def0b76c0947b8cb261b266e31041785dc2dc2db7569407a2f54fe
MD5 b037d59a11abf4b7d0d923ab4edd733c
BLAKE2b-256 64f6097776f7ac6d8a17421b4ac2c6895711e1df9a552a466422688f7987d943

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.9-cp38-cp38-win32.whl
  • Upload date:
  • Size: 250.5 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.9-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 8e2075ed4ea2e231e2e98b16cfa5dae87e9a6045a71104525e1efc29aa8faa8e
MD5 b866bc5423298fe64b8d93ca72823bce
BLAKE2b-256 798a80f93551a072cd4d11e6b09ceea6cb0de6f5475bb3106c337edd838fcf89

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 40a28759d345c0bb1f5b0ac74ac04f5d48136019522c95c0ec4b07786f67ce20
MD5 688305d5dc54bb2e2afb9259fdfdbc4f
BLAKE2b-256 5813f6cec7b702fd911796746479dcf0ef6209887f5a993d800b3d37e308ca01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp38-cp38-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 a3c47c71fde0c5d584402e67546c81af9951540f1f622d821e9c20761556473a
MD5 6c0136a840befa9d43d961a50b186082
BLAKE2b-256 ad1285e2d8aab39c6789cb684ab3a5ee2d570705b127b175f84f80990e501912

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp38-cp38-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 4c5913cb9769038bd03e42318955c2f15a688384a6a0b807bcfc8271603d9277
MD5 d4ad7db4124c3b484beac22bf841a57c
BLAKE2b-256 3ccb40365306923294a94232055260dd8f8e0f20017cddc6b1694e3938108610

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 119091c675e6ad19da8770f89aa1d52f4ad2a2018d631956f3e90c45882df880
MD5 78653f3fd9e263bbc7d5661d81ba38af
BLAKE2b-256 06c540d10fc3dda183da24f6cfd38a06e29772b99335bcac8ed3345d7059186b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 c2cd93725911c0159d597b90c96151070ef7e0e67604637e2f2abe06c34bf079
MD5 a339cc7c6f4880b7c2593936f5673e13
BLAKE2b-256 b388bac9ae1be2d615d98b411b9295cc90ca3d571d9526fb68dca1f9856e146d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a0220a7a16fd4bfc700661f920510defd31ef7830ce992d5cc51777aa8ccd724
MD5 da0ae2509c7aa3326a44cc6a98910c2b
BLAKE2b-256 2c217c5be8fba9ea137685aae8b85b9aedd205a803fb77542526b991c9174768

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1948d3ceac5b2d55bc93159c1e0679a256a87a54c735be5cef4543a9e692dbb9
MD5 b81e85e429546bb7ed7e4b4931c7779a
BLAKE2b-256 bdc87ec9625e51def540a638b5dad9d7bd343c5e463fef4709165f25ef118617

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 8ab39aa445d00902c43a1e951871bedc7f18d095a21eccba153d594faac34aea
MD5 87804927991b5248d6bca6971d2a188f
BLAKE2b-256 c074e9a523f8fb695d9591915cef984aa26e6b75fd186e09c040e2ac49ac3ae0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0d93167b7d7731fa9ff9fdc1bae84ec9c7133b01a35f8cc04e926d48da6ce1f7
MD5 04dc8e80e1ce3b5f1430cf2f643436be
BLAKE2b-256 9b9fce2c03a578e15f38079ff66fb4081c917b0fff576346848b860cce93328d

See more details on using hashes here.

File details

Details for the file regex-2022.7.9-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.9-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 c7c5f914b0eb5242c09f91058b80295525897e873b522575ab235b48db125597
MD5 bbcd503852a24dde351ec0e53bd66060
BLAKE2b-256 562868d95b36217cd51eb79ab3c1b440a4b99b3888373006fdfb364c865cf27d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3c6df8be7d1dd35a0d9a200fbc29f888c4452c8882d284f87608046152e049e6
MD5 011561aa5085349c748791709323393e
BLAKE2b-256 d880260a94026a69d36f7f00d5b9ed353b4997d46f5c684576466eb66dc118cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f355caec5bbce20421dc26e53787b10e32fd0df68db2b795435217210c08d69c
MD5 edc1475cae581f2f3f87651d48ac19dd
BLAKE2b-256 f502b2a4233d90dc0bbb0ef5a843aa3984a5536a9eb0586be6007265be9fa43e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 34ae4f35db30caa4caf85c55069fcb7a05966a3a5ba6e9e1dab5477d84fbb08a
MD5 64e6788f505047019ebac51f8cea72fd
BLAKE2b-256 10d65dffa81f5ca97eaa01cea67aaaacaa3435ea00045cd07465e2ee4fc0bd6f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.9-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 262.1 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.9-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 67bd3bdd27db7a6460384869dd4b9c54267d805b67d70b20495bb5767f8e051c
MD5 548a7d07411aa46a4b1aa43a1c1ef378
BLAKE2b-256 c415c2cb6d1972c8e9c12367917784332c40c54769a65343d9e53a35c279e79b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.9-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 249.7 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.9-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 1244e9b9b4b81c9c34e8a84273ffaeebdc78abc98a5b02dcdd49845eb3c63bd7
MD5 2e625b5e29973b15fadc9d2b8797fb81
BLAKE2b-256 0553d5d064a939ee33ed9690dca64354295602e357de82d07eec94ff53f2a45c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 13d74951c14708f00700bb29475129ecbc40e01b4029c62ee7bfe9d1f59f31ce
MD5 e526a3a29ac1ef5d45a193eeff9b7216
BLAKE2b-256 3609d227f02adafbe06473fdb337fff01094e42ed871e4dcef9687df0f21805a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp37-cp37m-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 b279b9bb401af41130fd2a09427105100bc8c624ed45da1c81c1c0d0aa639734
MD5 165c774c13d58d06abae5425a0426d80
BLAKE2b-256 1610ede3e853a585a78ee483e0dab8ce0bc940fe51c4776a84db1350c026971c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp37-cp37m-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 782627a1cb8fbb1c78d8e841f5b71c2c683086c038f975bebdac7cce7678a96f
MD5 5274e2b31806ef8c7708e710b188af22
BLAKE2b-256 723102fce8018735dc935dc5d01ef400eaac87f05c4231b7f5107155b971052d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 1703490c5b850fa9cef1af00c58966756042e6ca22f4fb5bb857345cd535834f
MD5 c75fbe9bb27996711c55cef3037d5da9
BLAKE2b-256 bc729a6c376d9b840b546ba74ea885a7f79deac3ed3cc3e9ddb2c3d39ebbd7e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp37-cp37m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 ae1c5b435d44aa91d48cc710f20c3485e0584a3ad3565d5ae031d61a35f674f4
MD5 a6bebae02013cc004f0ba895d4b34a00
BLAKE2b-256 1a09207b049e5d58527bf84324bd920473d75b9912925dc4c53a5e3c479afdff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fbdf4fc6adf38fab1091c579ece3fe9f493bd0f1cfc3d2c76d2e52461ca4f8a9
MD5 f46f09cbc104fa5f93a4ed07669c9d8b
BLAKE2b-256 82ef0510367605a41e96c73a27e9ef49ce915927e20ef0fbe660b6c3d7409576

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 4dc74f0171eede67d79a79c06eca0fe5b7b280dbb8c27ad1fae4ced2ad66268f
MD5 20a6523a197d5f40730ae49969222cbc
BLAKE2b-256 5380f57e6fb087e5234ecaf4d4556e43b905b7bd4ea07ee3218056fa9a239c95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0186edcda692c38381db8ac257c2d023fd2e08818d45dc5bee4ed84212045f51
MD5 9a7d4b12805befa1a5b4a7c8ae6969db
BLAKE2b-256 108bd3165fae5450979932fe6abb73d9739607796d74ad532e6bbd460904909f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4cfeb71095c8d8380a5df5a38ff94d27a3f483717e509130a822b4d6400b7991
MD5 9c10e6de94d20df3c92e2b0a5960cafe
BLAKE2b-256 040be4d3ce729bef45fcea588151d6b0f99676f5a5618f8a8c750b184d1f213a

See more details on using hashes here.

File details

Details for the file regex-2022.7.9-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.9-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 d561dcb0fb0ab858291837d51330696a45fd3ba6912a332a4ee130e5484b9e47
MD5 eca11151be6005385cd25195ee7fd8cf
BLAKE2b-256 1f9ce2553757957014b79c0e99758f465aa71366d436a6fcf83672dfae4943c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a00cd58a30a1041c193777cb1bc090200b05ff4b073d5935738afd1023e63069
MD5 d9e58748ace78467ce1f69ad08248f7d
BLAKE2b-256 9471449abb9a66378c78570434bd4831f35d0afc17829a0172f5a8b427780c50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5b1cffff2d9f832288fe516021cb81c95c57c0067b13a82f1d2daabdbc2f4270
MD5 15ad468e1f28254e2eb15439a5f1dae9
BLAKE2b-256 9d498f3efbcfe53cac650f88d79c0b1bf76a0d3c4fbd7b98ebd3011265787c45

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.9-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 273.9 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.9-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 00d2e907d3c5e4f85197c8d2263a9cc2d34bf234a9c6236ae42a3fb0bc09b759
MD5 a7007d38b69286432a9b0251233ff181
BLAKE2b-256 185ae26438594f78487ed57a507b21d914ebefa0ea39da575b3426bbcac1f3da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.7.9-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 256.9 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.9-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 e1fdda3ec7e9785065b67941693995cab95b54023a21db9bf39e54cc7b2c3526
MD5 7640d8954f7643f6cc593ce290d5e159
BLAKE2b-256 8374ee5c5f0371df90d7f081b301a9662bdd81399126e8914349ce5af3de9cf6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 ee769a438827e443ed428e66d0aa7131c653ecd86ddc5d4644a81ed1d93af0e7
MD5 9fe3a0c8838cbb064243a1b800dc0709
BLAKE2b-256 c0cf51a578dbdfc347be09d884d22c73d2f30bee3a859cb45e439a8f54e376f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp36-cp36m-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 ab0709daedc1099bbd4371ae17eeedd4efc1cf70fcdcfe5de1374a0944b61f80
MD5 4d8ad180e6a986a49bde9ae97c21bcbb
BLAKE2b-256 7119cf5ba5408b5617d1259e1c67b9effd7ab5a732507dce693f61b4f23ef7fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp36-cp36m-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 f8a2fd2f62a77536e4e3193303bec380df40d99e253b1c8f9b6eafa07eaeff67
MD5 dfd0864d84e962f8538a31695d9303fb
BLAKE2b-256 1fbae9d4713a394f668e328fab7c9b301b5bd79976ea5edf4ecfd2cdf06b70ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 a048f91823862270905cb22ef88038b08aac852ce48e0ecc4b4bf1b895ec37d9
MD5 a1e3fafd98ccc4b2e41cda04c28ef281
BLAKE2b-256 062e078df3d6ef37767743b32eae8c102843aaa220ebfb8d45b6508550fc286f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp36-cp36m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 0fd8c3635fa03ef79d07c7b3ed693b3f3930ccb52c0c51761c3296a7525b135c
MD5 963cef42359e9b35a1f42d0a60169b19
BLAKE2b-256 bc4d033d7490575323946d183043b65ec20351163cb38ca92f3b8e21c2e7362c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d7f5ccfff648093152cadf6d886c7bd922047532f72024c953a79c7553aac2fe
MD5 dbe439aaa0fdaf2dce396dcfcb1692fd
BLAKE2b-256 8097c89543699e367b1c697df1e279839ecfaa1bd4b142c8e3e361de3c6a7c95

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 ab1cb36b411f16da6e057ef8e6657dd0af36f59a667f07e0b4b617e44e53d7b2
MD5 1ff60d32da24ed210d4f74b3a7f6e62b
BLAKE2b-256 7ccf6da96544b8eee07cada570dbbd1acebf27ae55dfc01663770e7ac3ec8075

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 42da079e31ae9818ffa7a35cdd16ab7104e3f7eca9c0958040aede827b2e55c6
MD5 ebbef05c56b2f92df097026e943a3fd7
BLAKE2b-256 fbdb3bbea682e0c06da5b7975e2b316661f1355839019c8b4e3e5db446bc9d07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ea27acd97a752cfefa9907da935e583efecb302e6e9866f37565968c8407ad58
MD5 d6cadd3fb491b1bad0194763760d48c5
BLAKE2b-256 0be4fc147dab29bdd165fed8185a93e8febbcfa155d8d70f2c03dfae876173cf

See more details on using hashes here.

File details

Details for the file regex-2022.7.9-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.9-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 673549a0136c7893f567ed71ab5225ed3701c79b17c0a7faee846c645fc24010
MD5 3e73e690c918fde930a3bb0916894c36
BLAKE2b-256 0d1f12e5126ee9ca6025c0446e7cb53fbecf68afac3e45c8f1857385562b15d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9daeccb2764bf4cc280c40c6411ae176bb0876948e536590a052b3d647254c95
MD5 bc58ed9de7c8b2a8c57a17b04cf2c52c
BLAKE2b-256 c5b9183e303b7f6593b9b4c0c90bad0c8b017a2955ec08cb82b764ed46494d35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.7.9-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b72a4ec79a15f6066d14ae1c472b743af4b4ecee14420e8d6e4a336b49b8f21c
MD5 dfef88dbf1ad032a3b3222091c8b168f
BLAKE2b-256 22e56b5b91b8e8f34e20237706660d5e18c65c04f0cc270335ef809024e6f70f

See more details on using hashes here.

Supported by

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