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.

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

The global flags are: ASCII, BESTMATCH, ENHANCEMATCH, LOCALE, POSIX, REVERSE, UNICODE, 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 13.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 will cause it to attempt to improve the fit (i.e. reduce the number of errors) of the match that it has found.

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

Further examples to note:

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

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

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

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

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

>>> # A 'raw' fuzzy match:
>>> regex.fullmatch(r"(?:cats|cat){e<=1}", "cat").fuzzy_counts
(0, 0, 1)
>>> # 0 substitutions, 0 insertions, 1 deletion.

>>> # A better match might be possible if the ENHANCEMATCH flag used:
>>> regex.fullmatch(r"(?e)(?:cats|cat){e<=1}", "cat").fuzzy_counts
(0, 0, 0)
>>> # 0 substitutions, 0 insertions, 0 deletions.

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

>>> m = regex.search('(fuu){i<=2,d<=2,e<=5}', 'anaconda foo bar')
>>> m
<regex.Match object; span=(7, 10), match='a f', fuzzy_counts=(0, 2, 2)>
>>> m.fuzzy_changes
([], [7, 8], [10, 11])

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

'anacondfuuoo bar'

it would’ve been an exact match.

However, there were insertions at positions 7 and 8:

'anaconda fuuoo bar'
        ^^

and deletions at positions 10 and 11:

'anaconda f~~oo bar'
           ^^

So the actual string was:

'anaconda foo bar'

Named lists (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)
# Python 3
{'options': frozenset({'fifth', 'first', 'fourth', 'second', 'third'})}
# Python 2
{'options': frozenset(['fifth', 'fourth', 'second', 'third', 'first'])}

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-2021.3.17.tar.gz (694.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-2021.3.17-cp39-cp39-win_amd64.whl (270.5 kB view details)

Uploaded CPython 3.9Windows x86-64

regex-2021.3.17-cp39-cp39-win32.whl (254.7 kB view details)

Uploaded CPython 3.9Windows x86

regex-2021.3.17-cp39-cp39-manylinux2014_x86_64.whl (731.9 kB view details)

Uploaded CPython 3.9

regex-2021.3.17-cp39-cp39-manylinux2014_i686.whl (721.3 kB view details)

Uploaded CPython 3.9

regex-2021.3.17-cp39-cp39-manylinux2014_aarch64.whl (723.1 kB view details)

Uploaded CPython 3.9

regex-2021.3.17-cp39-cp39-manylinux2010_x86_64.whl (672.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ x86-64

regex-2021.3.17-cp39-cp39-manylinux2010_i686.whl (654.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ i686

regex-2021.3.17-cp39-cp39-manylinux1_x86_64.whl (672.0 kB view details)

Uploaded CPython 3.9

regex-2021.3.17-cp39-cp39-manylinux1_i686.whl (654.7 kB view details)

Uploaded CPython 3.9

regex-2021.3.17-cp39-cp39-macosx_10_9_x86_64.whl (284.7 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

regex-2021.3.17-cp38-cp38-win_amd64.whl (270.5 kB view details)

Uploaded CPython 3.8Windows x86-64

regex-2021.3.17-cp38-cp38-win32.whl (254.8 kB view details)

Uploaded CPython 3.8Windows x86

regex-2021.3.17-cp38-cp38-manylinux2014_x86_64.whl (737.1 kB view details)

Uploaded CPython 3.8

regex-2021.3.17-cp38-cp38-manylinux2014_i686.whl (726.1 kB view details)

Uploaded CPython 3.8

regex-2021.3.17-cp38-cp38-manylinux2014_aarch64.whl (731.4 kB view details)

Uploaded CPython 3.8

regex-2021.3.17-cp38-cp38-manylinux2010_x86_64.whl (678.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64

regex-2021.3.17-cp38-cp38-manylinux2010_i686.whl (660.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ i686

regex-2021.3.17-cp38-cp38-manylinux1_x86_64.whl (678.4 kB view details)

Uploaded CPython 3.8

regex-2021.3.17-cp38-cp38-manylinux1_i686.whl (660.7 kB view details)

Uploaded CPython 3.8

regex-2021.3.17-cp38-cp38-macosx_10_9_x86_64.whl (284.9 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

regex-2021.3.17-cp37-cp37m-win_amd64.whl (269.8 kB view details)

Uploaded CPython 3.7mWindows x86-64

regex-2021.3.17-cp37-cp37m-win32.whl (254.3 kB view details)

Uploaded CPython 3.7mWindows x86

regex-2021.3.17-cp37-cp37m-manylinux2014_x86_64.whl (721.1 kB view details)

Uploaded CPython 3.7m

regex-2021.3.17-cp37-cp37m-manylinux2014_i686.whl (711.8 kB view details)

Uploaded CPython 3.7m

regex-2021.3.17-cp37-cp37m-manylinux2014_aarch64.whl (717.5 kB view details)

Uploaded CPython 3.7m

regex-2021.3.17-cp37-cp37m-manylinux2010_x86_64.whl (666.0 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64

regex-2021.3.17-cp37-cp37m-manylinux2010_i686.whl (647.4 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ i686

regex-2021.3.17-cp37-cp37m-manylinux1_x86_64.whl (666.0 kB view details)

Uploaded CPython 3.7m

regex-2021.3.17-cp37-cp37m-manylinux1_i686.whl (647.4 kB view details)

Uploaded CPython 3.7m

regex-2021.3.17-cp37-cp37m-macosx_10_9_x86_64.whl (285.5 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

regex-2021.3.17-cp36-cp36m-win_amd64.whl (270.0 kB view details)

Uploaded CPython 3.6mWindows x86-64

regex-2021.3.17-cp36-cp36m-win32.whl (254.5 kB view details)

Uploaded CPython 3.6mWindows x86

regex-2021.3.17-cp36-cp36m-manylinux2014_x86_64.whl (723.0 kB view details)

Uploaded CPython 3.6m

regex-2021.3.17-cp36-cp36m-manylinux2014_i686.whl (711.6 kB view details)

Uploaded CPython 3.6m

regex-2021.3.17-cp36-cp36m-manylinux2014_aarch64.whl (716.9 kB view details)

Uploaded CPython 3.6m

regex-2021.3.17-cp36-cp36m-manylinux2010_x86_64.whl (666.2 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ x86-64

regex-2021.3.17-cp36-cp36m-manylinux2010_i686.whl (648.7 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ i686

regex-2021.3.17-cp36-cp36m-manylinux1_x86_64.whl (666.2 kB view details)

Uploaded CPython 3.6m

regex-2021.3.17-cp36-cp36m-manylinux1_i686.whl (648.7 kB view details)

Uploaded CPython 3.6m

regex-2021.3.17-cp36-cp36m-macosx_10_9_x86_64.whl (285.6 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: regex-2021.3.17.tar.gz
  • Upload date:
  • Size: 694.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.8.5

File hashes

Hashes for regex-2021.3.17.tar.gz
Algorithm Hash digest
SHA256 4b8a1fb724904139149a43e172850f35aa6ea97fb0545244dc0b805e0154ed68
MD5 c72d3bf55414ffbf92e43462ad91d508
BLAKE2b-256 84cbe7792d2c52f61a686ce0fabe79b3674c41238d07cd35c79b4062e9a807f6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2021.3.17-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 270.5 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for regex-2021.3.17-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a0d04128e005142260de3733591ddf476e4902c0c23c1af237d9acf3c96e1b38
MD5 d3c16898e8e1345cb43cda025d7a296d
BLAKE2b-256 e07e23cc71cb9d9b8e4bb5f26a86f3a5e55fac797cbdc3a003851569f7d91ee7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2021.3.17-cp39-cp39-win32.whl
  • Upload date:
  • Size: 254.7 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for regex-2021.3.17-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 dc9963aacb7da5177e40874585d7407c0f93fb9d7518ec58b86e562f633f36cd
MD5 dfb8585dcc20be1992fd9922733f1286
BLAKE2b-256 88b65f44c95b37274d7cbc1df53dbbd6e9a67d5ce966c2c51de19ff7087480bb

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 731.9 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c782da0e45aff131f0bed6e66fbcfa589ff2862fc719b83a88640daa01a5aff7
MD5 c9ecb91386805853e9542ae9ef033c1f
BLAKE2b-256 060b3885ccf6de658ce8f9c6bde34c0b8efcfac0d7fecbf86f93f82c5c2607eb

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp39-cp39-manylinux2014_i686.whl.

File metadata

  • Download URL: regex-2021.3.17-cp39-cp39-manylinux2014_i686.whl
  • Upload date:
  • Size: 721.3 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp39-cp39-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c66221e947d7207457f8b6f42b12f613b09efa9669f65a587a2a71f6a0e4d106
MD5 f1e0c63c964614fabcb6e8d51336ed30
BLAKE2b-256 8c1e1bf5e2988cee5b9d5fff832b3c883fdc5467907b7c1cd11ea127d7f7ba65

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp39-cp39-manylinux2014_aarch64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp39-cp39-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 723.1 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp39-cp39-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 709f65bb2fa9825f09892617d01246002097f8f9b6dde8d1bb4083cf554701ba
MD5 a1b05232e075649c07db49b9802f78c6
BLAKE2b-256 1a8b2063d49736fc5d111134a70bd0ad8a27734a4d4d3b7257e7f4c3b8ec26fd

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp39-cp39-manylinux2010_x86_64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp39-cp39-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 672.0 kB
  • Tags: CPython 3.9, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp39-cp39-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 360a01b5fa2ad35b3113ae0c07fb544ad180603fa3b1f074f52d98c1096fa15e
MD5 737be51ac82a905519fb05e5d8e45abf
BLAKE2b-256 c4e8b69bd15d4774fdd557c7fc3e62b6d65c4991da360f1910ce1ae5d6e5cd89

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp39-cp39-manylinux2010_i686.whl.

File metadata

  • Download URL: regex-2021.3.17-cp39-cp39-manylinux2010_i686.whl
  • Upload date:
  • Size: 654.7 kB
  • Tags: CPython 3.9, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp39-cp39-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 07ef35301b4484bce843831e7039a84e19d8d33b3f8b2f9aab86c376813d0139
MD5 2331e9097a7bcc55afabb881a04a815e
BLAKE2b-256 5b8b39cb36955d2f260e140b172f34f987699b15f7749588dc8534ba2585317a

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp39-cp39-manylinux1_x86_64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp39-cp39-manylinux1_x86_64.whl
  • Upload date:
  • Size: 672.0 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp39-cp39-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 882f53afe31ef0425b405a3f601c0009b44206ea7f55ee1c606aad3cc213a52c
MD5 0cbe15845e09f0a5e2e648eed85c97b2
BLAKE2b-256 5db837e61f07f5dd66efff3ef4a4476e808fda662c6021c7fd8b8a7599a24bea

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp39-cp39-manylinux1_i686.whl.

File metadata

  • Download URL: regex-2021.3.17-cp39-cp39-manylinux1_i686.whl
  • Upload date:
  • Size: 654.7 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp39-cp39-manylinux1_i686.whl
Algorithm Hash digest
SHA256 8bd4f91f3fb1c9b1380d6894bd5b4a519409135bec14c0c80151e58394a4e88a
MD5 1d44f05d0bb2d280afc5ef4ebd11ec35
BLAKE2b-256 31d8c35fec7a963227874b5ba5987be81ec6244303c10954c4999fd69fa53675

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2021.3.17-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 284.7 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for regex-2021.3.17-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4c2e364491406b7888c2ad4428245fc56c327e34a5dfe58fd40df272b3c3dab3
MD5 4d238a8d66ae71a8a743ac25def08aa6
BLAKE2b-256 42bc1119aacc8c8f84f7185a668ba43df9fdc6c50a9cd7521e2f5f76849ca560

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2021.3.17-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 270.5 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for regex-2021.3.17-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 14de88eda0976020528efc92d0a1f8830e2fb0de2ae6005a6fc4e062553031fa
MD5 f75d9f0da4d2c6c733c2caed1fca2a9b
BLAKE2b-256 ecbd6a5719a2d95dcd91d5e4d713e221b77cb508aac53c9d821ff08570c7b361

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2021.3.17-cp38-cp38-win32.whl
  • Upload date:
  • Size: 254.8 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for regex-2021.3.17-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 f5d0c921c99297354cecc5a416ee4280bd3f20fd81b9fb671ca6be71499c3fdf
MD5 e14a0abf33ef6caa1e1444f140d1c10d
BLAKE2b-256 c0b696e71989541ba8c97a06ee3830822378d143b990622db77f0c0cd9edd447

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 737.1 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3d9356add82cff75413bec360c1eca3e58db4a9f5dafa1f19650958a81e3249d
MD5 b9b57f99bb46d757d8b091b513ec80b9
BLAKE2b-256 d834f97834f2e4f2f461338f638b7832760d8e3fc0156c9e884b19f5e5875e5b

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp38-cp38-manylinux2014_i686.whl.

File metadata

  • Download URL: regex-2021.3.17-cp38-cp38-manylinux2014_i686.whl
  • Upload date:
  • Size: 726.1 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp38-cp38-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 bcd945175c29a672f13fce13a11893556cd440e37c1b643d6eeab1988c8b209c
MD5 1826f43e7689a090037118b0095bbd46
BLAKE2b-256 b56f9a5454b2069f38f50c5d822c843d5389a90668d29c2005b36a567a16f5a5

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp38-cp38-manylinux2014_aarch64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp38-cp38-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 731.4 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp38-cp38-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 63f3ca8451e5ff7133ffbec9eda641aeab2001be1a01878990f6c87e3c44b9d5
MD5 9cf6f279f0d4b026c499bd003071fdc4
BLAKE2b-256 33ba3d09bc00cbd9a9ceac42af8a49bc77342d08787500814835d442ad67211e

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 678.4 kB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 976a54d44fd043d958a69b18705a910a8376196c6b6ee5f2596ffc11bff4420d
MD5 4a6b5cbc697d1ddd53daed080a2e7598
BLAKE2b-256 ec9c3b2ab8e993b62b316b25a8483e344a596928e4942972374cdfa74c81b14e

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp38-cp38-manylinux2010_i686.whl.

File metadata

  • Download URL: regex-2021.3.17-cp38-cp38-manylinux2010_i686.whl
  • Upload date:
  • Size: 660.7 kB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp38-cp38-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 5770a51180d85ea468234bc7987f5597803a4c3d7463e7323322fe4a1b181578
MD5 6793e099ee2bc007cf931d83c02771ab
BLAKE2b-256 19ce6cc00ff1030d87275b388155d7f12a410b64821f7e34eea175c4c2eb4ff5

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 678.4 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 808404898e9a765e4058bf3d7607d0629000e0a14a6782ccbb089296b76fa8fe
MD5 0a446cb0c4721ebdc54ed559c64ac862
BLAKE2b-256 19f6cebc2f9d407bfa1498605782642815966d39479e885b36593fa36771b886

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp38-cp38-manylinux1_i686.whl.

File metadata

  • Download URL: regex-2021.3.17-cp38-cp38-manylinux1_i686.whl
  • Upload date:
  • Size: 660.7 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp38-cp38-manylinux1_i686.whl
Algorithm Hash digest
SHA256 b98bc9db003f1079caf07b610377ed1ac2e2c11acc2bea4892e28cc5b509d8d5
MD5 d979fd6b40c22beae9cf0129d458bd2f
BLAKE2b-256 ab1dd5b6154cc65be2a73401df21ef495fec9cf48d7d59d3f01f52f3ac5c7ec6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2021.3.17-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 284.9 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for regex-2021.3.17-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a0df9a0ad2aad49ea3c7f65edd2ffb3d5c59589b85992a6006354f6fb109bb18
MD5 2f2ce0a657fc7ccbe60953826295081e
BLAKE2b-256 7c3573c7af2f45c823ade1718afdaeba836ac79b91009a83f5ed74f5c19f1394

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2021.3.17-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 269.8 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for regex-2021.3.17-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 8e65e3e4c6feadf6770e2ad89ad3deb524bcb03d8dc679f381d0568c024e0deb
MD5 3e57e231f961c372c26c09ffc2351e89
BLAKE2b-256 f0cc66b24e3c8417aed8359ff7187da64aee86d69d7a2a7036818970cdb1c293

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2021.3.17-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 254.3 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for regex-2021.3.17-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 575a832e09d237ae5fedb825a7a5bc6a116090dd57d6417d4f3b75121c73e3be
MD5 2d10337d62b0eecbe4d060328d286b08
BLAKE2b-256 59a4025173b336f25624b7e13e2f30f7bfdf12874923e72612c48ec536b6c94b

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 721.1 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4c0788010a93ace8a174d73e7c6c9d3e6e3b7ad99a453c8ee8c975ddd9965643
MD5 fe1af32937830784548c31ce2a766dce
BLAKE2b-256 847fcf29aa66bd1846df3fc0e494cc8eedfefb9328ad68798dc8be0dbcfc165b

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp37-cp37m-manylinux2014_i686.whl.

File metadata

  • Download URL: regex-2021.3.17-cp37-cp37m-manylinux2014_i686.whl
  • Upload date:
  • Size: 711.8 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp37-cp37m-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a2ee026f4156789df8644d23ef423e6194fad0bc53575534101bb1de5d67e8ce
MD5 60fab5c659db765d69ca49d6e4351868
BLAKE2b-256 bdde1927d6867c9f67547fd82959fd5ab61f781fe3ef41a3827efbd17afa5be0

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp37-cp37m-manylinux2014_aarch64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp37-cp37m-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 717.5 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 18e25e0afe1cf0f62781a150c1454b2113785401ba285c745acf10c8ca8917df
MD5 ffd0168cef3c57cbf46802bc4306c9a3
BLAKE2b-256 9eb27cb36a3a09cce97255fca8d528bc45306d2d3cd970d2870c555aadc33082

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 666.0 kB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 486a5f8e11e1f5bbfcad87f7c7745eb14796642323e7e1829a331f87a713daaa
MD5 bbd22b7fd858cfc51a7b9ba30a983e00
BLAKE2b-256 f0920f378ac561c24080133a163f482b38f5cdbb339c017c5c36d0f109883771

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp37-cp37m-manylinux2010_i686.whl.

File metadata

  • Download URL: regex-2021.3.17-cp37-cp37m-manylinux2010_i686.whl
  • Upload date:
  • Size: 647.4 kB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp37-cp37m-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 ea2f41445852c660ba7c3ebf7d70b3779b20d9ca8ba54485a17740db49f46932
MD5 b3733b93e2b98321923296f3047a73ee
BLAKE2b-256 180fd3d390c3df9368c7f62773b51c86bfe1147dab3ae3b246c73c564a648ccc

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 666.0 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 d47d359545b0ccad29d572ecd52c9da945de7cd6cf9c0cfcb0269f76d3555689
MD5 2e3a9b5fd4c10cd64bc1c41624918946
BLAKE2b-256 aefaa2f562b996d83d8230b91f4e474ec6db894c548c8ac26e482cac5b2a1cc8

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp37-cp37m-manylinux1_i686.whl.

File metadata

  • Download URL: regex-2021.3.17-cp37-cp37m-manylinux1_i686.whl
  • Upload date:
  • Size: 647.4 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp37-cp37m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 201e2619a77b21a7780580ab7b5ce43835e242d3e20fef50f66a8df0542e437f
MD5 ae11464fe19d5b0375ee3570c44d9aa9
BLAKE2b-256 2cc976edc6c6cb2afb192e478623f24e1b2b03bb7155d3673c764ad802c8b54a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2021.3.17-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 285.5 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for regex-2021.3.17-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b9d8d286c53fe0cbc6d20bf3d583cabcd1499d89034524e3b94c93a5ab85ca90
MD5 cbc750ca353b50e6c40d0f9b95ae6017
BLAKE2b-256 e6ba56c0eba938194f735fc20d2cce1aa6512aa332b55586e51bc414bb778b2e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2021.3.17-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 270.0 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for regex-2021.3.17-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 13f50969028e81765ed2a1c5fcfdc246c245cf8d47986d5172e82ab1a0c42ee5
MD5 61bd960354a66effd86a366c0b1cff23
BLAKE2b-256 1f508bfe9cc78a9967559c22772fd5b96d96bb0aa0b2322f818aaefee9363cc8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2021.3.17-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 254.5 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5

File hashes

Hashes for regex-2021.3.17-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 159fac1a4731409c830d32913f13f68346d6b8e39650ed5d704a9ce2f9ef9cb3
MD5 cd36afcc8337761df52833f56241e8f8
BLAKE2b-256 6c14a6bcbf14c37a67359eb1511e1a23e018827b89b38c8de727a512bcecc4d5

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp36-cp36m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 723.0 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3d9a7e215e02bd7646a91fb8bcba30bc55fd42a719d6b35cf80e5bae31d9134e
MD5 f436ec8491fddb9003a31670ae800b8c
BLAKE2b-256 80b087ce651eda341986cc2ce5df016e452c550036f8ca4ed728c959f96a6846

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp36-cp36m-manylinux2014_i686.whl.

File metadata

  • Download URL: regex-2021.3.17-cp36-cp36m-manylinux2014_i686.whl
  • Upload date:
  • Size: 711.6 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp36-cp36m-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 39c44532d0e4f1639a89e52355b949573e1e2c5116106a395642cbbae0ff9bcd
MD5 627892ad52025abfb99130d4753e368f
BLAKE2b-256 8840e8a23298713f618530b351c53899485de95d6f98a8beb3bfb381b4a80747

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp36-cp36m-manylinux2014_aarch64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp36-cp36m-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 716.9 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4651f839dbde0816798e698626af6a2469eee6d9964824bb5386091255a1694f
MD5 57c0bd94a200957b2dd6eef3353b0902
BLAKE2b-256 618a5cb2ea3979cb8564d2cbe74153cb2973c5145ad41633e0e5687996797f28

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 666.2 kB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 f85d6f41e34f6a2d1607e312820971872944f1661a73d33e1e82d35ea3305e14
MD5 fec066a72cb50b47a2797a518e529403
BLAKE2b-256 359e547f04299ce40e2646f7d6d2b0fc98019d70f762dedcf65940a72dc4dc2c

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp36-cp36m-manylinux2010_i686.whl.

File metadata

  • Download URL: regex-2021.3.17-cp36-cp36m-manylinux2010_i686.whl
  • Upload date:
  • Size: 648.7 kB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp36-cp36m-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 a59a2ee329b3de764b21495d78c92ab00b4ea79acef0f7ae8c1067f773570afa
MD5 3a98a9caadf3911fdfe2c07ada7985b9
BLAKE2b-256 b73b34762a54d0688efd937bd22e968310b1811f2e64cfb2ef98ed32af75a504

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: regex-2021.3.17-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 666.2 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 633497504e2a485a70a3268d4fc403fe3063a50a50eed1039083e9471ad0101c
MD5 b9765257a5d2cf8075fd2927abc8d02d
BLAKE2b-256 543a4ce9e3b330e174eebb2fbfa6d66d89fa26db3db4f112fa4009f431e2662f

See more details on using hashes here.

File details

Details for the file regex-2021.3.17-cp36-cp36m-manylinux1_i686.whl.

File metadata

  • Download URL: regex-2021.3.17-cp36-cp36m-manylinux1_i686.whl
  • Upload date:
  • Size: 648.7 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.7

File hashes

Hashes for regex-2021.3.17-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 cb4ee827857a5ad9b8ae34d3c8cc51151cb4a3fe082c12ec20ec73e63cc7c6f0
MD5 f4be58ffa2dece89aad4247529d8b17a
BLAKE2b-256 bf6b1ea2c5c2d0467c7fa51ac83e07092bfb93d90807ad3024d67aa5574cd953

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2021.3.17-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 285.6 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for regex-2021.3.17-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b97ec5d299c10d96617cc851b2e0f81ba5d9d6248413cd374ef7f3a8871ee4a6
MD5 5f5585b1f1e83b9142b64087fd847443
BLAKE2b-256 8519e6ec7cc9df3a26f50aea38c678e55117c0eebae34ee62d90b24cc4eac364

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