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

Uploaded Source

Built Distributions

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

regex-2020.11.13-cp39-cp39-win_amd64.whl (270.4 kB view details)

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9Windows x86

regex-2020.11.13-cp39-cp39-manylinux2014_x86_64.whl (732.6 kB view details)

Uploaded CPython 3.9

regex-2020.11.13-cp39-cp39-manylinux2014_i686.whl (721.8 kB view details)

Uploaded CPython 3.9

regex-2020.11.13-cp39-cp39-manylinux2014_aarch64.whl (724.4 kB view details)

Uploaded CPython 3.9

regex-2020.11.13-cp39-cp39-manylinux2010_x86_64.whl (673.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ x86-64

regex-2020.11.13-cp39-cp39-manylinux2010_i686.whl (655.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.12+ i686

regex-2020.11.13-cp39-cp39-manylinux1_x86_64.whl (673.1 kB view details)

Uploaded CPython 3.9

regex-2020.11.13-cp39-cp39-manylinux1_i686.whl (721.8 kB view details)

Uploaded CPython 3.9

regex-2020.11.13-cp39-cp39-macosx_10_9_x86_64.whl (284.2 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

regex-2020.11.13-cp38-cp38-win_amd64.whl (270.4 kB view details)

Uploaded CPython 3.8Windows x86-64

regex-2020.11.13-cp38-cp38-win32.whl (254.7 kB view details)

Uploaded CPython 3.8Windows x86

regex-2020.11.13-cp38-cp38-manylinux2014_x86_64.whl (738.3 kB view details)

Uploaded CPython 3.8

regex-2020.11.13-cp38-cp38-manylinux2014_i686.whl (727.0 kB view details)

Uploaded CPython 3.8

regex-2020.11.13-cp38-cp38-manylinux2014_aarch64.whl (730.1 kB view details)

Uploaded CPython 3.8

regex-2020.11.13-cp38-cp38-manylinux2010_x86_64.whl (679.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ x86-64

regex-2020.11.13-cp38-cp38-manylinux2010_i686.whl (661.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.12+ i686

regex-2020.11.13-cp38-cp38-manylinux1_x86_64.whl (679.7 kB view details)

Uploaded CPython 3.8

regex-2020.11.13-cp38-cp38-manylinux1_i686.whl (726.9 kB view details)

Uploaded CPython 3.8

regex-2020.11.13-cp38-cp38-macosx_10_9_x86_64.whl (284.2 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

regex-2020.11.13-cp37-cp37m-win_amd64.whl (269.7 kB view details)

Uploaded CPython 3.7mWindows x86-64

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

Uploaded CPython 3.7mWindows x86

regex-2020.11.13-cp37-cp37m-manylinux2014_x86_64.whl (719.8 kB view details)

Uploaded CPython 3.7m

regex-2020.11.13-cp37-cp37m-manylinux2014_i686.whl (712.8 kB view details)

Uploaded CPython 3.7m

regex-2020.11.13-cp37-cp37m-manylinux2014_aarch64.whl (715.7 kB view details)

Uploaded CPython 3.7m

regex-2020.11.13-cp37-cp37m-manylinux2010_x86_64.whl (667.2 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ x86-64

regex-2020.11.13-cp37-cp37m-manylinux2010_i686.whl (649.1 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.12+ i686

regex-2020.11.13-cp37-cp37m-manylinux1_x86_64.whl (667.2 kB view details)

Uploaded CPython 3.7m

regex-2020.11.13-cp37-cp37m-manylinux1_i686.whl (712.8 kB view details)

Uploaded CPython 3.7m

regex-2020.11.13-cp37-cp37m-macosx_10_9_x86_64.whl (284.8 kB view details)

Uploaded CPython 3.7mmacOS 10.9+ x86-64

regex-2020.11.13-cp36-cp36m-win_amd64.whl (269.9 kB view details)

Uploaded CPython 3.6mWindows x86-64

regex-2020.11.13-cp36-cp36m-win32.whl (254.4 kB view details)

Uploaded CPython 3.6mWindows x86

regex-2020.11.13-cp36-cp36m-manylinux2014_x86_64.whl (723.6 kB view details)

Uploaded CPython 3.6m

regex-2020.11.13-cp36-cp36m-manylinux2014_i686.whl (711.5 kB view details)

Uploaded CPython 3.6m

regex-2020.11.13-cp36-cp36m-manylinux2014_aarch64.whl (717.7 kB view details)

Uploaded CPython 3.6m

regex-2020.11.13-cp36-cp36m-manylinux2010_x86_64.whl (666.5 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ x86-64

regex-2020.11.13-cp36-cp36m-manylinux2010_i686.whl (649.3 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.12+ i686

regex-2020.11.13-cp36-cp36m-manylinux1_x86_64.whl (666.5 kB view details)

Uploaded CPython 3.6m

regex-2020.11.13-cp36-cp36m-manylinux1_i686.whl (711.5 kB view details)

Uploaded CPython 3.6m

regex-2020.11.13-cp36-cp36m-macosx_10_9_x86_64.whl (284.9 kB view details)

Uploaded CPython 3.6mmacOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: regex-2020.11.13.tar.gz
  • Upload date:
  • Size: 694.6 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-2020.11.13.tar.gz
Algorithm Hash digest
SHA256 83d6b356e116ca119db8e7c6fc2983289d87b27b3fac238cfe5dca529d884562
MD5 4310bfc300d49224476fcd032a8ce5f7
BLAKE2b-256 2ee43447fed9ab29944333f48730ecff4dca92f0868c5b188d6ab2b2078e32c2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 270.4 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for regex-2020.11.13-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a15f64ae3a027b64496a71ab1f722355e570c3fac5ba2801cafce846bf5af01d
MD5 79730b23cbe7b17a979499293f4de15f
BLAKE2b-256 0105bf78fd05dfa7e2c007397b2f3f449ff22b5db0fe690b33d90ba6e37cd6bb

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-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.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for regex-2020.11.13-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 f8f295db00ef5f8bae530fc39af0b40486ca6068733fb860b42115052206466f
MD5 7c3fc02d15beae5e6cced8ebebc468a5
BLAKE2b-256 3a3e5cde9f778ee9ee4629af60606ec60b124399644c6fc2fa503531cc6ea0e2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 732.6 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8f6a2229e8ad946e36815f2a03386bb8353d4bde368fdf8ca5f0cb97264d3b5c
MD5 2034b9dd9f41e007446e04e6ab7ce546
BLAKE2b-256 74b37b6e9d23e4d4baa01852382e4b11f2e03ee0896f07c80d8ac0efe3f41785

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp39-cp39-manylinux2014_i686.whl
  • Upload date:
  • Size: 721.8 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp39-cp39-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3128e30d83f2e70b0bed9b2a34e92707d0877e460b402faca908c6667092ada9
MD5 ac20be8b162162aa7363876ba0052af1
BLAKE2b-256 25b62fdc9d1cf58d390f44f1d750af990aedff322a63e61bf75d8a6fe7d0522a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp39-cp39-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 724.4 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp39-cp39-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 717881211f46de3ab130b58ec0908267961fadc06e44f974466d1887f865bd5b
MD5 c6eb7b54b7d4bb42ff6957da8a147f98
BLAKE2b-256 1e50cfb35fa6641616ce5dfb2c0dcb68706a50c594f5613532926d8b2dcf3007

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp39-cp39-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 673.1 kB
  • Tags: CPython 3.9, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp39-cp39-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 f7d29a6fc4760300f86ae329e3b6ca28ea9c20823df123a2ea8693e967b29917
MD5 7616756cae9f1b290097f00e4c211235
BLAKE2b-256 9faf20dd48bfeb325f66b13f6381894926213659a86236c5e85ce5d9c5a457c0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp39-cp39-manylinux2010_i686.whl
  • Upload date:
  • Size: 655.4 kB
  • Tags: CPython 3.9, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp39-cp39-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 d2d8ce12b7c12c87e41123997ebaf1a5767a5be3ec545f64675388970f415e2e
MD5 9ba62b69ce6e300bd065be777d6402d4
BLAKE2b-256 b20bdaddc5e4df892b86dc226ffba098c52f2027105dee273d4011ae6f696b8e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp39-cp39-manylinux1_x86_64.whl
  • Upload date:
  • Size: 673.1 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp39-cp39-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 7a25fcbeae08f96a754b45bdc050e1fb94b95cab046bf56b016c25e9ab127b3e
MD5 610df2e80ff1cfb44173b37ba8bcae26
BLAKE2b-256 2caac3b328501444f33bf0736d87578d18e5e166cd9887db040951286283f3cf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp39-cp39-manylinux1_i686.whl
  • Upload date:
  • Size: 721.8 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp39-cp39-manylinux1_i686.whl
Algorithm Hash digest
SHA256 4902e6aa086cbb224241adbc2f06235927d5cdacffb2425c73e6570e8d862364
MD5 9cf0be583c6bf62499e7f48fd778bb24
BLAKE2b-256 b36581c3c566b524b4e8ed5d0179a5471021da5c7a228f243e5a15ea6e5d4a76

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 284.2 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.0

File hashes

Hashes for regex-2020.11.13-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1862a9d9194fae76a7aaf0150d5f2a8ec1da89e8b55890b1786b8f88a0f619dc
MD5 662d2dbbe00e00450cc1461ae4aff8ea
BLAKE2b-256 150cdd1bb917e4d8418d7fd72651eaed541756a52cb2e3b92197f0072fc61640

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 270.4 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for regex-2020.11.13-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 6c54ce4b5d61a7129bad5c5dc279e222afd00e721bf92f9ef09e4fae28755683
MD5 9b4f3b52337a5cbb70928f9099c251ea
BLAKE2b-256 458ccd9932e80a28cebe5bf4912624a77ab3681c5694042f10e5028e902f1b36

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp38-cp38-win32.whl
  • Upload date:
  • Size: 254.7 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for regex-2020.11.13-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 7913bd25f4ab274ba37bc97ad0e21c31004224ccb02765ad984eef43e04acc6c
MD5 91f663fbb8fa558d70dd26e5a68abccd
BLAKE2b-256 1df7b6dcea19e7a49ae150a1fda90093628fe741428257ed0597ac4d70bf6b84

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 738.3 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a3d748383762e56337c39ab35c6ed4deb88df5326f97a38946ddd19028ecce6b
MD5 9ae6b22d1791764d764255b1207598f7
BLAKE2b-256 5f3d9fd5e0c79912f52d3e581b9a6c7f874569b845ae0f8746e472a4a80ee150

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp38-cp38-manylinux2014_i686.whl
  • Upload date:
  • Size: 727.0 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp38-cp38-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c084582d4215593f2f1d28b65d2a2f3aceff8342aa85afd7be23a9cad74a0de5
MD5 21abaeb5ce355fd7437bd200f66053d2
BLAKE2b-256 00fd82786c5fd3347d0b49cf386a646f079e41b4e6a54357463792dcb69fa828

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp38-cp38-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 730.1 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp38-cp38-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2c99e97d388cd0a8d30f7c514d67887d8021541b875baf09791a3baad48bb4f8
MD5 51a148b8e4fe27528f0d3a26916e8a93
BLAKE2b-256 1e59a624d46d218630bf072ef28d2b483cd977b44253621ec54cfe3b514df2cc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 679.7 kB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b2b1a5ddae3677d89b686e5c625fc5547c6e492bd755b520de5332773a8af06b
MD5 ff04ecbd70beb0a32716678611396307
BLAKE2b-256 530a2b753266b12157a4d8dc027ee70f31b05ff2a16ce500273f5e9a6f438a94

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp38-cp38-manylinux2010_i686.whl
  • Upload date:
  • Size: 661.4 kB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp38-cp38-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 d1ebb090a426db66dd80df8ca85adc4abfcbad8a7c2e9a5ec7513ede522e0a8f
MD5 f788c7f5a7c9db257d2f2674087a07f9
BLAKE2b-256 34db868ed61b6a6b6cda7b9f198fe6498ca8709c8b3b4ff12f71f9df55749d9e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 679.7 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2a11a3e90bd9901d70a5b31d7dd85114755a581a5da3fc996abfefa48aee78af
MD5 d70cd8223c2c4d56c406d8f59da244e1
BLAKE2b-256 38e17e6eabea2331c20e7b2dae381162c5a3d245a6586853f80d992f0af3d1fc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp38-cp38-manylinux1_i686.whl
  • Upload date:
  • Size: 726.9 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp38-cp38-manylinux1_i686.whl
Algorithm Hash digest
SHA256 e3faaf10a0d1e8e23a9b51d1900b72e1635c2d5b0e1bea1c18022486a8e2e52d
MD5 7b125c7f82f9c740330cf18c83190741
BLAKE2b-256 a843d5763f6ac042b1667a9cd1fafb3008cb490138087cbe2ed65e0543bc4f3a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 284.2 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.0

File hashes

Hashes for regex-2020.11.13-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 baf378ba6151f6e272824b86a774326f692bc2ef4cc5ce8d5bc76e38c813a55f
MD5 f9bfbe36cbd41c542ec54f19a9387dc3
BLAKE2b-256 196e26b701f309a6eedd28afa4eda798a73a12467598077c2e7b22943ab8e827

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 269.7 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for regex-2020.11.13-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 1fa7ee9c2a0e30405e21031d07d7ba8617bc590d391adfc2b7f1e8b99f46f444
MD5 a7477139911455d173bc3fae8b74e770
BLAKE2b-256 4f3f40c8db23e022ccc9eb9fc0f39202af49c8614b22990b2e7129c2543f2da5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-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.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for regex-2020.11.13-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 0d08e71e70c0237883d0bef12cad5145b84c3705e9c6a588b2a9c7080e5af2a4
MD5 1c7572a6c0b853b146fada7e21f0a7d7
BLAKE2b-256 d1eb178cd2a489c7147d4a8ccfcaf241c6c25f79e8b7bdda3165e01949a1cff5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 719.8 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02951b7dacb123d8ea6da44fe45ddd084aa6777d4b2454fa0da61d569c6fa538
MD5 63d8b835c12412a3028ae9f3d188a83d
BLAKE2b-256 61b28f281520d9f08d0f6771b8160a87a4b487850cde9f1abe257da4d8bab599

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp37-cp37m-manylinux2014_i686.whl
  • Upload date:
  • Size: 712.8 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp37-cp37m-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3bddc701bdd1efa0d5264d2649588cbfda549b2899dc8d50417e47a82e1387ba
MD5 0a82a30e67d014f52d066a2582c9d649
BLAKE2b-256 6391ffa97014bc50d4116294d4e9f1b70b7639c9743e62eba2994f5dd25d7516

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp37-cp37m-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 715.7 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp37-cp37m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e32f5f3d1b1c663af7f9c4c1e72e6ffe9a78c03a31e149259f531e0fed826512
MD5 6156f330fd7e8ee96915c0173bbaa1f7
BLAKE2b-256 354cda0b77777b03ac64abf721123ef6532949aa11a009d7173e4b06b51da61c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 667.2 kB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 bafb01b4688833e099d79e7efd23f99172f501a15c44f21ea2118681473fdba0
MD5 26cafec7ba976706589c0d8aefaf8840
BLAKE2b-256 2028ff0d0936a31f15a0879caf6dac1f1cbaab1fc7b9e8baf8a1d5a70380fb22

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp37-cp37m-manylinux2010_i686.whl
  • Upload date:
  • Size: 649.1 kB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp37-cp37m-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 262c6825b309e6485ec2493ffc7e62a13cf13fb2a8b6d212f72bd53ad34118f1
MD5 8c44e56c0cf070319cca362eea3d1f7e
BLAKE2b-256 336050dcfbba43b8077dd566f8d3c245579da5d1158e33f9d8e0e4e4b6080fa9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 667.2 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 5862975b45d451b6db51c2e654990c1820523a5b07100fc6903e9c86575202a0
MD5 d851702fd38475257c237f255c4aa972
BLAKE2b-256 eae1e046de6981d5b97d110b2bfeaed7129e3e3a0bda057f4ef215c33f84c27c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp37-cp37m-manylinux1_i686.whl
  • Upload date:
  • Size: 712.8 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp37-cp37m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 38c8fd190db64f513fe4e1baa59fed086ae71fa45083b6936b52d34df8f86a88
MD5 c127f1a03477dee669c594f07ca9cbc9
BLAKE2b-256 01f0544ee9309e04a4e5e3f00434cd88615cf3f315e312203819e5d619348047

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp37-cp37m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 284.8 kB
  • Tags: CPython 3.7m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.0

File hashes

Hashes for regex-2020.11.13-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b2f4007bff007c96a173e24dcda236e5e83bde4358a557f9ccf5e014439eae4b
MD5 b66c6ddc6b8b2526e702a2bebf28d449
BLAKE2b-256 0ad5ae173868b6525c6f18f9a684c8842c0673cfc630430fcb48d8c6eb817f2e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 269.9 kB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for regex-2020.11.13-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 749078d1eb89484db5f34b4012092ad14b327944ee7f1c4f74d6279a6e4d1884
MD5 7e67bfab3113c6ee3534b85395c829a1
BLAKE2b-256 25f0a0f9832c21389bc0157aee8ba42bcdc3e33e031e6383d00a4bf9df3a4d12

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 254.4 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.5

File hashes

Hashes for regex-2020.11.13-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 49cae022fa13f09be91b2c880e58e14b6da5d10639ed45ca69b85faf039f7a4e
MD5 7fe89c87a72f42713ce1282235175c74
BLAKE2b-256 b50ac566f5c2272f1e41466237974377a15b6786badb0a765622e26d3bd6b3a7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 723.6 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9801c4c1d9ae6a70aeb2128e5b4b68c45d4f0af0d1535500884d644fa9b768c6
MD5 bad7bd38091e93b6d675355ad940be09
BLAKE2b-256 0d8a3ac62dadb767ace65a5b954265de4031a99b27148fe14b24771f5c2c2dca

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp36-cp36m-manylinux2014_i686.whl
  • Upload date:
  • Size: 711.5 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp36-cp36m-manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1ab79fcb02b930de09c76d024d279686ec5d532eb814fd0ed1e0051eb8bd2daa
MD5 27b4ea441ea7bc29881101d1aa17077e
BLAKE2b-256 d0d68c062289f828baf1537d25509a54cc916840f54a4a94efedab77016faca4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp36-cp36m-manylinux2014_aarch64.whl
  • Upload date:
  • Size: 717.7 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp36-cp36m-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6a8ce43923c518c24a2579fda49f093f1397dad5d18346211e46f134fc624e31
MD5 68630e131272cc7c69f1a539497e295b
BLAKE2b-256 af508f249c68cbc41d7e1bb9da14e4a5b6a87295d4c60a707a416c9c8e2d1608

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 666.5 kB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 56e01daca75eae420bce184edd8bb341c8eebb19dd3bce7266332258f9fb9dd7
MD5 b6b69745c71603d06670dce098aeff6e
BLAKE2b-256 40ade0a6ea246c70fe549d8ef4a4632e66cccbdaab4830b04735f44144ed9308

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp36-cp36m-manylinux2010_i686.whl
  • Upload date:
  • Size: 649.3 kB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp36-cp36m-manylinux2010_i686.whl
Algorithm Hash digest
SHA256 bba349276b126947b014e50ab3316c027cac1495992f10e5682dc677b3dfa0c5
MD5 233a0b3e78bccf67e7284cdda0e009c6
BLAKE2b-256 38a15d18d3b32a19f4db59e6e144befa237f42f7fffc8aae7681e2cab48e373e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 666.5 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6e4b08c6f8daca7d8f07c8d24e4331ae7953333dbd09c648ed6ebd24db5a10ee
MD5 0fcfb5a9f5699f6ab0f41323feacdd8e
BLAKE2b-256 5a75aca08032c9752a75acc60ff7f4e58f1a74164b996395f44727ffdb17ebaf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp36-cp36m-manylinux1_i686.whl
  • Upload date:
  • Size: 711.5 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.8.0

File hashes

Hashes for regex-2020.11.13-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 a63f1a07932c9686d2d416fb295ec2c01ab246e89b4d58e5fa468089cab44b70
MD5 2ed5fde94af1d04bf42facbb2c1a9a70
BLAKE2b-256 c364cdcff1c4e030ee23bd1d1fe39329fa1f756230b4e8f54d1453e1353659d7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: regex-2020.11.13-cp36-cp36m-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 284.9 kB
  • Tags: CPython 3.6m, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.51.0 CPython/3.9.0

File hashes

Hashes for regex-2020.11.13-cp36-cp36m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8b882a78c320478b12ff024e81dc7d43c1462aa4a3341c754ee65d857a521f85
MD5 66e3506fb8860590d8f9be7da5eeda09
BLAKE2b-256 4e9eb956e48125b2034705841f2040d07374748bec107c46de07555f6b97774a

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