Reputation: 363
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
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
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
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