extreme001
extreme001

Reputation: 363

Which Regular Expression flavour is used in Python?

I want to know which RegEx-flavour is used for Python? Is it PCRE, Perl compatible or is it ICU or something else?

Upvotes: 11

Views: 3194

Answers (3)

dark100
dark100

Reputation: 196

Unfortunately I cannot answer directly to the comment, but atomic blocks are an important feature (although few people understand their power), since you can create multibyte character sequences with it. I.e. in Windows a newline is \r\n.

Example: /(?>\r\n|\n|\r)\p{Any}/ matches to \n\r or \r., because that is a combination of a newline and any character literal, but it does not match to \r\n since nothing follows the newline.

Upvotes: 4

Kendall Frey
Kendall Frey

Reputation: 44374

There is a good overview of Python's regex support here.

To sum it up:

The only significant features missing from Python's regex syntax are atomic grouping, possessive quantifiers and Unicode properties.

Atomic grouping and possessive quantifiers don't add much expressive power to the language. They are essentially for simpler and faster regexes.

Unicode is supported by the Python regex in that you can use literal unicode characters like Æ, but you can't use any Unicode escape codes in the regex itself.

Upvotes: 2

pestilence669
pestilence669

Reputation: 5699

It's compatible enough w/ Perl, meaning most Perl expressions will work unmodified. It aims to be Perl compatible but, of course, there are some minor differences.

It, technically, uses its own flavor of regular expressions. For instance, named groups were offered in Python regex long-before other implementations adopted the syntax. It also supports Unicode out of the box. Most Python extensions are supported elsewhere these days. See http://docs.python.org/library/re.html

Upvotes: 12

Related Questions