7

Pythonに使用されているRegExフレーバーを知りたいですか?それはPCRE、Perl互換ですか、それともICUか何か他のものですか?

4

3 に答える 3

10

Perlとの互換性は十分にあるため、ほとんどの Perl 式は変更せずに動作します。Perl との互換性を目指していますが、もちろん、いくつかの小さな違いがあります。

技術的には、独自の正規表現を使用しています。たとえば、名前付きグループは、他の実装が構文を採用するずっと前に、Python 正規表現で提供されていました。また、すぐに使用できる Unicode もサポートしています。最近では、ほとんどの Python 拡張機能が他の場所でサポートされています。http://docs.python.org/library/re.htmlを参照してください

于 2012-08-18T21:43:47.400 に答える
4

残念ながらコメントに直接お答えすることはできませんが、アトミック ブロックを使用してマルチバイト文字シーケンスを作成できるため、アトミック ブロックは重要な機能です (ただし、その機能を理解している人はほとんどいません)。つまり、Windows では改行は \r\n です。

例: /(?>\r\n|\n|\r)\p{Any}/ は、改行と任意の文字リテラルの組み合わせであるため、\n\r または \r. に一致しますが、 \r\n には一致しません。改行の後には何も続きません。

于 2012-08-23T04:04:14.610 に答える
2

ここにPythonの正規表現サポートの概要があります。

要約すると:

Pythonの正規表現構文に欠けている唯一の重要な機能は、アトミックグループ化、所有格数量詞、およびUnicodeプロパティです。

アトミックグループ化と所有格数量詞は、言語に多くの表現力を追加しません。これらは基本的に、より単純で高速な正規表現用です。

Unicodeは、Æのようなリテラルのユニコード文字を使用できるという点でPython正規表現でサポートされていますが、正規表現自体でUnicodeエスケープコードを使用することはできません。

于 2012-08-18T21:42:11.930 に答える