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

Uploaded Source

Built Distributions

regex-2022.6.2-cp310-cp310-win_amd64.whl (262.0 kB view details)

Uploaded CPython 3.10Windows x86-64

regex-2022.6.2-cp310-cp310-win32.whl (250.4 kB view details)

Uploaded CPython 3.10Windows x86

regex-2022.6.2-cp310-cp310-musllinux_1_1_x86_64.whl (733.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

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

Uploaded CPython 3.10musllinux: musl 1.1+ s390x

regex-2022.6.2-cp310-cp310-musllinux_1_1_ppc64le.whl (755.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ppc64le

regex-2022.6.2-cp310-cp310-musllinux_1_1_i686.whl (721.4 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ i686

regex-2022.6.2-cp310-cp310-musllinux_1_1_aarch64.whl (732.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ ARM64

regex-2022.6.2-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.6.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl (788.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390x

regex-2022.6.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (800.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64le

regex-2022.6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (761.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

regex-2022.6.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (677.9 kB view details)

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

regex-2022.6.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (752.5 kB view details)

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

regex-2022.6.2-cp310-cp310-macosx_11_0_arm64.whl (281.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

regex-2022.6.2-cp310-cp310-macosx_10_9_x86_64.whl (289.0 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

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

Uploaded CPython 3.9Windows x86-64

regex-2022.6.2-cp39-cp39-win32.whl (250.4 kB view details)

Uploaded CPython 3.9Windows x86

regex-2022.6.2-cp39-cp39-musllinux_1_1_x86_64.whl (733.0 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

regex-2022.6.2-cp39-cp39-musllinux_1_1_s390x.whl (756.1 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ s390x

regex-2022.6.2-cp39-cp39-musllinux_1_1_ppc64le.whl (755.4 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ppc64le

regex-2022.6.2-cp39-cp39-musllinux_1_1_i686.whl (720.8 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ i686

regex-2022.6.2-cp39-cp39-musllinux_1_1_aarch64.whl (731.4 kB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ ARM64

regex-2022.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (763.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

regex-2022.6.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl (787.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ s390x

regex-2022.6.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (800.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ppc64le

regex-2022.6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (761.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

regex-2022.6.2-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.6.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (751.9 kB view details)

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

regex-2022.6.2-cp39-cp39-macosx_11_0_arm64.whl (281.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

regex-2022.6.2-cp39-cp39-macosx_10_9_x86_64.whl (289.0 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

regex-2022.6.2-cp38-cp38-win_amd64.whl (262.0 kB view details)

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.8Windows x86

regex-2022.6.2-cp38-cp38-musllinux_1_1_x86_64.whl (740.1 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

regex-2022.6.2-cp38-cp38-musllinux_1_1_s390x.whl (760.4 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ s390x

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

Uploaded CPython 3.8musllinux: musl 1.1+ ppc64le

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

Uploaded CPython 3.8musllinux: musl 1.1+ i686

regex-2022.6.2-cp38-cp38-musllinux_1_1_aarch64.whl (736.6 kB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ ARM64

regex-2022.6.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (764.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

regex-2022.6.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl (789.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ s390x

regex-2022.6.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (805.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ppc64le

regex-2022.6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (764.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

regex-2022.6.2-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.6.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (752.9 kB view details)

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

regex-2022.6.2-cp38-cp38-macosx_11_0_arm64.whl (281.7 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

regex-2022.6.2-cp38-cp38-macosx_10_9_x86_64.whl (289.1 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

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

Uploaded CPython 3.7mWindows x86-64

regex-2022.6.2-cp37-cp37m-win32.whl (249.6 kB view details)

Uploaded CPython 3.7mWindows x86

regex-2022.6.2-cp37-cp37m-musllinux_1_1_x86_64.whl (724.2 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ x86-64

regex-2022.6.2-cp37-cp37m-musllinux_1_1_s390x.whl (745.3 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ s390x

regex-2022.6.2-cp37-cp37m-musllinux_1_1_ppc64le.whl (745.5 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.1+ ppc64le

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

Uploaded CPython 3.7mmusllinux: musl 1.1+ i686

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

Uploaded CPython 3.7mmusllinux: musl 1.1+ ARM64

regex-2022.6.2-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.6.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl (775.0 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ s390x

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

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ppc64le

regex-2022.6.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (746.1 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64

regex-2022.6.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (670.9 kB view details)

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

regex-2022.6.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (736.7 kB view details)

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

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

Uploaded CPython 3.7mmacOS 10.9+ x86-64

regex-2022.6.2-cp36-cp36m-win_amd64.whl (273.8 kB view details)

Uploaded CPython 3.6mWindows x86-64

regex-2022.6.2-cp36-cp36m-win32.whl (256.8 kB view details)

Uploaded CPython 3.6mWindows x86

regex-2022.6.2-cp36-cp36m-musllinux_1_1_x86_64.whl (723.3 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ x86-64

regex-2022.6.2-cp36-cp36m-musllinux_1_1_s390x.whl (744.6 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ s390x

regex-2022.6.2-cp36-cp36m-musllinux_1_1_ppc64le.whl (745.0 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ ppc64le

regex-2022.6.2-cp36-cp36m-musllinux_1_1_i686.whl (712.3 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ i686

regex-2022.6.2-cp36-cp36m-musllinux_1_1_aarch64.whl (720.7 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.1+ ARM64

regex-2022.6.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (749.2 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ x86-64

regex-2022.6.2-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl (774.6 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ s390x

regex-2022.6.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (787.3 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ppc64le

regex-2022.6.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (746.8 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ARM64

regex-2022.6.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (671.1 kB view details)

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

regex-2022.6.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (737.3 kB view details)

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

regex-2022.6.2-cp36-cp36m-macosx_10_9_x86_64.whl (289.6 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for regex-2022.6.2.tar.gz
Algorithm Hash digest
SHA256 f7b43acb2c46fb2cd506965b2d9cf4c5e64c9c612bac26c1187933c7296bf08c
MD5 a2b630e676c9456b06f9f9feb0bd6166
BLAKE2b-256 1a6b9b6b8284e88105acbcb39e71bd3bfcaffcd36c2601152ae23b00e6e04d91

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.6.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 262.0 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.6.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 809bbbbbcf8258049b031d80932ba71627d2274029386f0452e9950bcfa2c6e8
MD5 0a699d46aa5a29d9d5904b6ef9178ddd
BLAKE2b-256 b6d56a436d7a2e113e4acb186ade171a1a8ddf024250777bcb42e8fa86c62bbe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.6.2-cp310-cp310-win32.whl
  • Upload date:
  • Size: 250.4 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.6.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 775694cd0bb2c4accf2f1cdd007381b33ec8b59842736fe61bdbad45f2ac7427
MD5 6ddf5859118e120fc3c43db6512a7af0
BLAKE2b-256 c12be1602215e4045cef9aeeb6d670d37db14f29208193235e752df17becedba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 24908aefed23dd065b4a668c0b4ca04d56b7f09d8c8e89636cf6c24e64e67a1e
MD5 505e2d32abd8d40c5dbf9af7a59a5f2f
BLAKE2b-256 7bf64d8908ccc3861c47d86959440b18a415d49d4cee3ce31f2eaa11a0654f26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp310-cp310-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 ed657a07d8a47ef447224ea00478f1c7095065dfe70a89e7280e5f50a5725131
MD5 6da12c59865e5bc5b5a61f4bbc85cb6b
BLAKE2b-256 655b9844f5aa3e5a3d4a11eed01bfcc1f1ef4f87c7c4101652c7da06fb0a79a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp310-cp310-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 be57f9c7b0b423c66c266a26ad143b2c5514997c05dd32ce7ca95c8b209c2288
MD5 c49ea0092a1ca119ddb1a5822c3247d2
BLAKE2b-256 af856d4710cfde2f1213ad01d0f99da3f5f6ecc13261657734155f68f2473a41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 fdecb225d0f1d50d4b26ac423e0032e76d46a788b83b4e299a520717a47d968c
MD5 4bf9b87e7e7a8bccb68780899a40036d
BLAKE2b-256 693da1b6efc0d614c28b2fad984f51af98dc11bf32df97dcccdf97497c906cc7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp310-cp310-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 5e201b1232d81ca1a7a22ab2f08e1eccad4e111579fd7f3bbf60b21ef4a16cea
MD5 92172e4f365c6f1f13d4f484cc6e8204
BLAKE2b-256 4e4245fdecc241f5fa21275aca442a17711cd6f67b643fa76e2042e6f55df958

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5aba3d13c77173e9bfed2c2cea7fc319f11c89a36fcec08755e8fb169cf3b0df
MD5 dce80a56635215ea9c5728ce8f046401
BLAKE2b-256 f223f28f15669fef1450dd4e49f5631affa323ce717d0dd25e6c28d7e372e014

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 9c1f62ee2ba880e221bc950651a1a4b0176083d70a066c83a50ef0cb9b178e12
MD5 79e250923679aa5a9e883b3461ddb9a4
BLAKE2b-256 c86f051a7efaebb96dee1834d201985a0ab96e5d4210881c90a351a28c57cb9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 4a11cbe8eb5fb332ae474895b5ead99392a4ea568bd2a258ab8df883e9c2bf92
MD5 a62560387adcd6d78e860c988b7e70c6
BLAKE2b-256 bff6420a5601b243ebf3ade90d482ab509de0a3c743c6e548cf562fe90cfa42b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0afa6a601acf3c0dc6de4e8d7d8bbce4e82f8542df746226cd35d4a6c15e9456
MD5 cf4eeb8e417ddb58108d7c873a84db90
BLAKE2b-256 f7ef59a2da0637119a684de14229b0eb518ea6af210e29702a40ed952a1519f3

See more details on using hashes here.

File details

Details for the file regex-2022.6.2-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.6.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 179410c79fa86ef318d58ace233f95b87b05a1db6dc493fa29404a43f4b215e2
MD5 b2f28e24938da5917cce7168a8d35047
BLAKE2b-256 e1a7841708e010fbb18ddbf3fb285493de30929c05bb8f016ed7226ae474b65c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 249437f7f5b233792234aeeecb14b0aab1566280de42dfc97c26e6f718297d68
MD5 6b80533fb6ca0910cb4cffc4d8f7e8ba
BLAKE2b-256 47f05879c66860b9b72782b1819029c0ed3fffea93dd066370067cff08f3bba0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ffef4b30785dc2d1604dfb7cf9fca5dc27cd86d65f7c2a9ec34d6d3ae4565ec2
MD5 10993d9e772a626513760b9b823b7c76
BLAKE2b-256 2b93c0de851bbc2de10773e869213e5f277ab1a1c32cad662d81dd12a778e006

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 042d122f9fee3ceb6d7e3067d56557df697d1aad4ff5f64ecce4dc13a90a7c01
MD5 14a524c02acd5c6c6c052ac8761b0a2b
BLAKE2b-256 550d564e1bdb463f16a9a20de260c8aea550ddd99bd875bf458f92ca5420f3a5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.6.2-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.6.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 3b9b6289e03dbe6a6096880d8ac166cb23c38b4896ad235edee789d4e8697152
MD5 a96d88c7e9334f0c8dede939381f65f2
BLAKE2b-256 6ec2328bdec6da241d909f4627c200bfee84b5b10c03f4f61243d1b10a42ef54

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.6.2-cp39-cp39-win32.whl
  • Upload date:
  • Size: 250.4 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.6.2-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 d70596f20a03cb5f935d6e4aad9170a490d88fc4633679bf00c652e9def4619e
MD5 73d733db2aa24da9e428bae84a17fb7b
BLAKE2b-256 b8903af7a03e6247469acd3f5a17ae8c28615334b07af708f605c04ca7c8f85f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c3db393b21b53d7e1d3f881b64c29d886cbfdd3df007e31de68b329edbab7d02
MD5 4c7a552a93da9a8d57b0087b565bb2c3
BLAKE2b-256 e5bd64912ae1015712923ed5a3e7c525537e14a41fa41efa4d3265b18e988d7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp39-cp39-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 be456b4313a86be41706319c397c09d9fdd2e5cdfde208292a277b867e99e3d1
MD5 7e62b934b8400c6c2cacac0e80fff4b8
BLAKE2b-256 5d76e6f3374388f7f2bcb86ded43826adcacc301960e268e79d0805f075c4423

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp39-cp39-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 e7b2ff451f6c305b516281ec45425dd423223c8063218c5310d6f72a0a7a517c
MD5 8ca28656863c8d5f0e3d757eceb88d0c
BLAKE2b-256 8068d439b6dc42417afe88516420cf731027f6a52c46214eb8094aa4cc26be6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 7f648037c503985aed39f85088acab6f1eb6a0482d7c6c665a5712c9ad9eaefc
MD5 75e9f9e9eb43cb9c89f121aad53f79dd
BLAKE2b-256 ea801459b9ca415bab0377a000d5704e7acb124eb5e09bcd045a68154b6b7b01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp39-cp39-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 c400dfed4137f32127ea4063447006d7153c974c680bf0fb1b724cce9f8567fc
MD5 f769598ddfe1d184545428ca45a08865
BLAKE2b-256 0d2b482b57e25499fdeb71f095365b3ecb7380f2dceafc240a45d10e57f24bca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5c8d61883a38b1289fba9944a19a361875b5c0170b83cdcc95ea180247c1b7d3
MD5 0ef3ffc13cd4efce4e14ce18d6f91686
BLAKE2b-256 7470cf3680345ceabbbafe082eb1495e40c487a5194bda1e7b6571aa17b44499

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 53d69d77e9cfe468b000314dd656be85bb9e96de088a64f75fe128dfe1bf30dd
MD5 5b650d0b608780814a18f8fa1931042f
BLAKE2b-256 874a3dd04637effe775302472df5d807fc75e6bfc6e55cbb016adff8c5c18f8e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 fa7c7044aabdad2329974be2246babcc21d3ede852b3971a90fd8c2056c20360
MD5 5e46d3c25524461b244f0839d0141f85
BLAKE2b-256 a7fc6407240ea1a17a09a1a5a2d0ec032df47baeeb5b019738ef78994b8196d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3de1ecf26ce85521bf73897828b6d0687cc6cf271fb6ff32ac63d26b21f5e764
MD5 9585aa4550296cd2389db56a64dab567
BLAKE2b-256 da3f3103c074763900f97fec47937e02f32acb91cf09154b276e70492ce20d0b

See more details on using hashes here.

File details

Details for the file regex-2022.6.2-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.6.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 e85b10280cf1e334a7c95629f6cbbfe30b815a4ea5f1e28d31f79eb92c2c3d93
MD5 496da08baba455978e1244eb66f62fbd
BLAKE2b-256 b1285a69a9c7ce92e223b6d479371ff986ae3f245c58ec8ca7105d023d9794a6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c5429202bef174a3760690d912e3a80060b323199a61cef6c6c29b30ce09fd17
MD5 33cd784893a242661d832873b30744e0
BLAKE2b-256 1ec060c224f194be38f76d8ec2cde87d17fdfa7cf4ce8da04e698919307288fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1ea28f0ee6cbe4c0367c939b015d915aa9875f6e061ba1cf0796ca9a3010570
MD5 e700fbc9921187cb3b19286c8e5be0c7
BLAKE2b-256 ad3b2a9b7564dec614ba482791ac22f0e6e4635d5b46f4b75a150f32000934f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1ab5cf7d09515548044e69d3a0ec77c63d7b9dfff4afc19653f638b992573126
MD5 6785799cd057bcdb0320517cdf7af9cf
BLAKE2b-256 ff181ee252dc2df462cb88551bed5b7e24abf5e5d121c6a711cb474213db3a95

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.6.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 262.0 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.6.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 495a4165172848503303ed05c9d0409428f789acc27050fe2cf0a4549188a7d5
MD5 8701fb1b83c8a766162835f80fa9cb30
BLAKE2b-256 d892b26111d35c643f694b18f3466778f3ab5c3dc596942638c5e35b95dd2535

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.6.2-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.6.2-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 a58d21dd1a2d6b50ed091554ff85e448fce3fe33a4db8b55d0eba2ca957ed626
MD5 9d3f887c6b7d1e2b54a839a7f425c897
BLAKE2b-256 bcdd0a825c818179365c823a36d031c56b29f4b76167f047a1181b8d6adbc998

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 c757f3a27b6345de13ef3ca956aa805d7734ce68023e84d0fc74e1f09ce66f7a
MD5 8b6315739ac3f5a257dc3a139c7a8a3e
BLAKE2b-256 d8edce18e93c61d35c9211585f9f2f54ed6f37b04f9667b80fedac2ae90c6604

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp38-cp38-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 cff5c87e941292c97d11dc81bd20679f56a2830f0f0e32f75b8ed6e0eb40f704
MD5 d06aa71f5e4a92be900b9b445dd9e2d7
BLAKE2b-256 0d9d87dea92a0b1090e649a44ef65574558badef5e39a6569f554fda38259390

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp38-cp38-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 933e72fbe1829cbd59da2bc51ccd73d73162f087f88521a87a8ec9cb0cf10fa8
MD5 dea2e483b986feff69ae7a5ff09a03e9
BLAKE2b-256 2da69efbe3849d5dbe19bb1a1c2a0289bb9c72b46372ead1b04065f9414346e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 555f7596fd1f123f8c3a67974c01d6ef80b9769e04d660d6c1a7cc3e6cff7069
MD5 e9980fb1d1f26911c8978d5a243bbf13
BLAKE2b-256 e654f7d9966ba1214544dda315cb4c27d040d00669d340b8e56ad6189ef46bad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp38-cp38-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 27624b490b5d8880f25dac67e1e2ea93dfef5300b98c6755f585799230d6c746
MD5 52a2f9e0b0bdf8bb3b97547f920f4181
BLAKE2b-256 0b3a2e152b9c2789f5743a4569eb351c6aeb8b958ecf267402f7e529bc9f109d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 52684da32d9003367dc1a1c07e059b9bbaf135ad0764cd47d8ac3dba2df109bc
MD5 475bacd0b2f5e10e25092068c2452530
BLAKE2b-256 69b8bf7ca3c3b65180f4ac7c23755ca2f6c76ddce4e2f3cc02bae6ccc15cec6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1fc26bb3415e7aa7495c000a2c13bf08ce037775db98c1a3fac9ff04478b6930
MD5 c49fad7ebf8dacb6a0f5cc87fdec567c
BLAKE2b-256 a8db3973457826dd92708f1b279b56b095bb13b23260f0bcf1f0df04a023bf4e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 b5f759a1726b995dc896e86f17f9c0582b54eb4ead00ed5ef0b5b22260eaf2d0
MD5 27ecfaae8cdc42e3585aeaa32cffcf99
BLAKE2b-256 a3f46b75980c2d295f039d2c68f7a0766bc28c197da5d66ba1feee26a1db08eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 26dbe90b724efef7820c3cf4a0e5be7f130149f3d2762782e4e8ac2aea284a0b
MD5 994243e8093b07f55549aaaa15d3d7be
BLAKE2b-256 62bd4f553e662b3f546627adfd6d44bbf7dc1292030904eb78dec83968797f63

See more details on using hashes here.

File details

Details for the file regex-2022.6.2-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.6.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 bc635ab319c9b515236bdf327530acda99be995f9d3b9f148ab1f60b2431e970
MD5 776e805a1d5e6512d055effbcc62632a
BLAKE2b-256 7cb084846315b3f85580d47aa0be0f840524e41ffea92bd2d4b21d7f37c54915

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1c1264eb40a71cf2bff43d6694ab7254438ca19ef330175060262b3c8dd3931a
MD5 724a1cdcc54279341255d924165299e5
BLAKE2b-256 2af724769ae21c27f7af0322f0ddbb636c74c7e27af312144b8f47df495cfb25

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a8a08ace913c4101f0dc0be605c108a3761842efd5f41a3005565ee5d169fb2b
MD5 d3c10bcfa60de6e5ac3389346b565825
BLAKE2b-256 e66f58782c05f5cf39d45cfeff0191dba4c884f7c7fd62cbc222b6f34276e6f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1a6f2698cfa8340dfe4c0597782776b393ba2274fe4c079900c7c74f68752705
MD5 799512adb5cc8fb29daea335369019a5
BLAKE2b-256 2a0bdf65f9173019d6c1cc74926d7e64a7aa883eefe8cedee2c68a19db1aef35

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.6.2-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.6.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 ceff75127f828dfe7ceb17b94113ec2df4df274c4cd5533bb299cb099a18a8ca
MD5 782684d81b11e8d419768f625296d86d
BLAKE2b-256 504f0b674e289a33510fd3684a3263e87588b3262da8c228621c9a42ed14a90d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.6.2-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 249.6 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.6.2-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 24963f0b13cc63db336d8da2a533986419890d128c551baacd934c249d51a779
MD5 97261f397eba701fa9be39b55da72003
BLAKE2b-256 9eb10d30c30492ef3038dc6992f7846d2b32a95917cf574888b560e56a279ab1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp37-cp37m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 663dca677bd3d2e2b5b7d0329e9f24247e6f38f3b740dd9a778a8ef41a76af41
MD5 476cf5dfaab3c5835cc4380d7242f556
BLAKE2b-256 3909b912bec3665d3e3a454cf7b7d9d06fbf54f418fa29004494ce2500361cb9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp37-cp37m-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 4b8838f70be3ce9e706df9d72f88a0aa7d4c1fea61488e06fdf292ccb70ad2be
MD5 f94cd95d9d77f3239884bf033eeb105c
BLAKE2b-256 4fe5ec90a5327c29156f2f1938943df6faf5c2cb468fc83367d972bb1eba6a8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp37-cp37m-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 71988a76fcb68cc091e901fddbcac0f9ad9a475da222c47d3cf8db0876cb5344
MD5 51863bf55c6f69a7b9f081769b98f6d8
BLAKE2b-256 6c25649ee4386a5d1c689df54ebd393f322d45cf3a286b90ed7f0be3c5c03ec1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 8fd5f8ae42f789538bb634bdfd69b9aa357e76fdfd7ad720f32f8994c0d84f1e
MD5 78809c8024458dcbcc4892b7c1097e80
BLAKE2b-256 469301575a76d644e900d31eb4b277637afeb5c08003afda6044f713249ab735

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp37-cp37m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 68e5c641645351eb9eb12c465876e76b53717f99e9b92aea7a2dd645a87aa7aa
MD5 9ddadba81cc8867ed0fb259ac15ce9de
BLAKE2b-256 01b56e7291e348159162c82e30307a48cebabba6c69278b8f3b7a37ffab6d7f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3adafe6f2c6d86dbf3313866b61180530ca4dcd0c264932dc8fa1ffb10871d58
MD5 daebe8d8f17071f62d10ef670eb809eb
BLAKE2b-256 0f92116de5ebb427f567c483768ad15944afb219d36545e09d667338ac3df58e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 30637e7fa4acfed444525b1ab9683f714be617862820578c9fd4e944d4d9ad1f
MD5 7d7adaa808d244503de354ae50e638a2
BLAKE2b-256 409786e6de6623d5fcc7658c55ec1b31182e3a5d17fa4f7fbd9084ee95203fdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 047b2d1323a51190c01b6604f49fe09682a5c85d3c1b2c8b67c1cd68419ce3c4
MD5 615c8a26a391b32cc6e6a95ff6f2c22a
BLAKE2b-256 0ed8e883079c040f98280ff5b5f7d99d3160b060ad0098cb72902ddd771bcaff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 186c5a4a4c40621f64d771038ede20fca6c61a9faa8178f9e305aaa0c2442a97
MD5 15cac58ba2833ab99b3120f64bc82364
BLAKE2b-256 7dbf2ad9f5515fc16585378052f9aa231df0af9ccd963b57e04f47d3d461db88

See more details on using hashes here.

File details

Details for the file regex-2022.6.2-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.6.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 48dddddce0ea7e7c3e92c1e0c5a28c13ca4dc9cf7e996c706d00479652bff76c
MD5 12e57e1095bb8162fa75ba1b213b92fb
BLAKE2b-256 146f6daaa417aac2b3ec27b88411c3721b854a11a05f92164841a7bb3be48501

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 67ae3601edf86e15ebe40885e5bfdd6002d34879070be15cf18fc0d80ea24fed
MD5 de3c306d11fcd5652666c4c32ef380a0
BLAKE2b-256 bab2ea66ddd63218d4264c18053aa5e5e115d7b8f61dd9ae739a8d7d6ac94948

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fcd7c432202bcb8b642c3f43d5bcafc5930d82fe5b2bf2c008162df258445c1d
MD5 f326bd9228480f719ef87c50340b1e89
BLAKE2b-256 699b226d0c3ca19c17463b43cb48dd33017616b00134dbd52ce0991f3a97bb78

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.6.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 273.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.6.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 4d206703a96a39763b5b45cf42645776f5553768ea7f3c2c1a39a4f59cafd4ba
MD5 936dfc494338b14026aaa8bedbbdf063
BLAKE2b-256 cda477b1aa16648939c645799e0f8ff73c2b55ff8484fe49abab1d8519eb3aba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2022.6.2-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 256.8 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.6.2-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 4a5449adef907919d4ce7a1eab2e27d0211d1b255bf0b8f5dd330ad8707e0fc3
MD5 181cb9542470aac6eb5578b75c6c208d
BLAKE2b-256 a5e36bad78a753a0079d05c57690298b61e20e2d53f748b2ab0a0048891bf69a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp36-cp36m-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 17443f99b8f255273731f915fdbfea4d78d809bb9c3aaf67b889039825d06515
MD5 061608a39182b9b9cdac41290e51353f
BLAKE2b-256 9bf18314f039fb97823e84bf8844be6bc5fafe8e56c2359da8040765da55be0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp36-cp36m-musllinux_1_1_s390x.whl
Algorithm Hash digest
SHA256 9faa01818dad9111dbf2af26c6e3c45140ccbd1192c3a0981f196255bf7ec5e6
MD5 fc07c37524e8410849bbd6b07aeb2c08
BLAKE2b-256 ff4f5df75f328aff6960a708ff0acc9c343472fb7b7cb7d2bf5dcefab867ae83

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp36-cp36m-musllinux_1_1_ppc64le.whl
Algorithm Hash digest
SHA256 f43522fb5d676c99282ca4e2d41e8e2388427c0cf703db6b4a66e49b10b699a8
MD5 8644ffd7ad39f0fea02d5c9b9860bbc6
BLAKE2b-256 247613619977f6fcbc0f2223dcd5fed2659b8e1bf1ed23420c852a58bce303f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp36-cp36m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 2ac29b834100d2c171085ceba0d4a1e7046c434ddffc1434dbc7f9d59af1e945
MD5 a309172b39c85dfb5254025f131ff9ba
BLAKE2b-256 ad3bbcac176dfb3ec64c757ffbacfd095b07bef61e1c4351e175d6e31edea8d8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp36-cp36m-musllinux_1_1_aarch64.whl
Algorithm Hash digest
SHA256 17764683ea01c2b8f103d99ae9de2473a74340df13ce306c49a721f0b1f0eb9e
MD5 7013712904bc4a45392ac08cb37d70e8
BLAKE2b-256 26dbcee33ff2a72a866589fca1ddca2959f43e3dbffc15273b175998f9c39698

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f57823f35b18d82b201c1b27ce4e55f88e79e81d9ca07b50ce625d33823e1439
MD5 2c8f792b78ae38045d7199af29e9089d
BLAKE2b-256 2aed2d76bd36455ca9e75ccd1ee83921b91dbcae59af34c9d108ecefbb5f8cc8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 c5eac5d8a8ac9ccf00805d02a968a36f5c967db6c7d2b747ab9ed782b3b3a28b
MD5 2815570d2113fbc30f916ea1a010f38b
BLAKE2b-256 b9898a3140371485f7557a4aa1d9ed4fd052c8682a6b198f1f4e34753e050fe5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 166ae7674d0a0e0f8044e7335ba86d0716c9d49465cff1b153f908e0470b8300
MD5 99d658daa94365e420b62f0988ce1428
BLAKE2b-256 2a68920eecac82ad8c32c1845659c648962bd197edb9f9a0f4236d39d2571751

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2f4c101746a8dac0401abefa716b357c546e61ea2e3d4a564a9db9eac57ccbce
MD5 70985e7a8947d2a79a4bce76f918c190
BLAKE2b-256 36115cbf4fbf6502a101edb569247526ab0748d573aee68275d320bcc636dcb8

See more details on using hashes here.

File details

Details for the file regex-2022.6.2-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.6.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b2932e728bee0a634fe55ee54d598054a5a9ffe4cd2be21ba2b4b8e5f8064c2c
MD5 c03e03b1d7b9270618f67aaa06efd0ce
BLAKE2b-256 4a135fb3cb045a40baa76e32e1403b4f356c8f60db706ad59f1ac8ec549efbaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4d42e3b7b23473729adbf76103e7df75f9167a5a80b1257ca30688352b4bb2dc
MD5 018164b013973a8299b9c4e4261c5368
BLAKE2b-256 6e30a5d68cd2dac5d0339382250078074ae6e8f7f4e5ff6a941ee8d9f4f44fe0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for regex-2022.6.2-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ecd2b5d983eb0adf2049d41f95205bdc3de4e6cc2350e9c80d4409d3a75229de
MD5 dedbdabb18d198e81124ea8885d26f1a
BLAKE2b-256 92e4a06d61f2e533a7fbdaf988925d0f52b5ab3d4c61b497d826d4c183c135fe

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