※\言及は:一つは前に述べた上で、マッチした文字列のサブグループに対応する参照番号は、サブグループ番号1は99に1の範囲内、先頭から算出される
数が0で始まる場合、または3桁の長さで。それから彼は、もはや対応するサブグループを参照するために使用されていないが、文字に対応する試合用進ASCII値を表します。
※\ A:デフォルトでは、このシンボルとケアの文字(^)は、フロントが\ Aまたは^記号であれば、ある文字列マッチングの開始位置を表すの両方、そして文字がで表示される必要があり、同じですマッチする文字列の先頭。(^)の使用ファンシーバックを忘れ
※\ Z:この記号はデフォルトであり、ドル記号($)は同じで、すべての一致する文字列の終了位置を示します。
デフォルトでは同じです(トップ2、正規表現のコンパイラフラグがセットされているので、あなたがre.MULTILINEフラグを設定した場合、正確に同じことを意味するものではありません、その後、小道具の文字(^ )も、ドル記号($)も改行前の位置と一致している間、改行後の位置を照合していますが、このフラグを設定するものは何でもしているが設定されていない、\と\ Zは文字列の先頭を一致させることができますし、終了位置。こうした一致した位置の文字のように、私たちはプロボックスアサーションと呼ばれ、それらに名前を付け、含意は、それらが任意の文字と一致しないことを、彼らは唯一の位置を特定するために使用されています。)
※\ B:一時ボックスアサーション、単語の境界と一致し、単語はUnidcodeの英数字またはアンダースコア文字として定義されている
(次の水平ラインもFishCあるFishC_comので、あなたは、彼が2 FishCに合わせる見ることができますドット(。)感嘆符(!)、ワード境界に属し、括弧はワード境界であると考えられているので、言葉のシンボルと単語の境界線がない、言葉であると考えられています。)
※\ B:反し\ B非単語境界にマッチします。
(分析:pyが、それは宇宙PYと一致しませんので、Pyは一致していない、それはPYとは一致しません、Unidcode英数字またはアンダースコア文字である単語を持って帰ってきました!)
※\ D:
1、ユニコード(文字列型)モード用:[0-9]と他の数字を含め、任意の数と一致する。re.ASCIIをフラグはオンである場合、それが唯一の一致する[0-9]。
の[0-9]の数値のいずれにも一致:8(タイプバイト)モード(すなわち、文字列はフロントBを有する)2、。
※\ D:任意の非Unicode番号と一致し、フラグが同等[^ 0-9]マッチング、re.ASCIIなっている場合、Dコントラストと\。
※\ S:
1、Unicodeの(STRタイプ)モード:Unicodeを一致空白文字([\ T \ n \ R \含む F \ V] と他のホワイトスペース);フラグがre.ASCIIなっている場合、それだけ一致[\ T \ N- \ R&LT \ F \ V]
(\ Fフィード、\ Vは垂直タブキー、垂直タブ表し)
(タイプバイト)は、8 2を、モード:ASCII定義マッチング空白文字、すなわち[\ T \ n \ R \ F \ V]
※\ S:\ sの反対実際には、非Unicode文字白のいずれかに一致する、re.ASCIIをフラグがオンになっている場合、マッチングに相当する[^ \ T \ n \ R \ F \ V]
※\ W:
1、Unicodeの(文字列タイプ)モード:任意のUnicodeワード文字と一致し、キャラクターは基本的にすべての言語が一致することができ、もちろん、数字、アンダースコアが含まれる;あなたはre.ASCIIマークをオンにすると、それだけ一致[-ZA-Z0-9_]
(タイプバイト)は、8 2、モード:定義された一致英数字ASCII、すなわち、[-ZA-Z0-9_]
(空間以外括弧内の感嘆符の数、他の文字、文字は、アンダースコア、数字は単語の文字です。)
※\ Wは:\反しワットで、実際には、任意の非Unicodeワード文字にマッチします。オープンre.ASCIIフラグが[^-ZA-Z0-9_]と等価である場合
※エスケープ信号:
正規表現はまた、ほとんどのPythonのエスケープ文字列をサポート:\、\ B、\ F、\ nは、\ R、\トン、\ U、\ U、\ V、\ xと、 \\
注1:\ bは、境界は、一般的にのみ文字クラスで使用されている単語のみ「バックスペース」を表す一致した
。注2:\ uと\ UはUnicodeのみのモードで認識されます
。注3:8進数のエスケープ(\デジタルを別段の言及のサブセットであると考えられる;文字列のように、常に最大進エスケープの最初の番号が0である、または三進数字がある場合、進数であると考えられる場合)、制限されています唯一の3桁の長さ
##正規表現のコンパイル
(リピート方法あなたは、正規のテーブル式を使用する必要がある場合は、あなたがオブジェクトモデルにコンパイルされた正規表現を置くことができます。私たちは(re.compile使用)コンパイルする......)
※re.compileを():コンパイル関数は、正規表現をコンパイルする正規表現(パターン)が一致するためのオブジェクト()を生成し、検索するために使用される()関数は、これら2つを使用します。
(コンパイル方法によって、オブジェクトを返す正規表現パターンPである場合、検索ものfindAllメソッドを使用することができる、等に摩耗に一致する文字列を見ることができる、方法を用いて行うことができ、これはレベルのモジュールでありますスキーマ・オブジェクトpはオーバーの正規表現コンパイラであるため、最初のパラメータは保存し、直接OKに合致させる文字列で渡すので、我々は、彼を呼び出すためにモジュールを使用する方法)
なぜなら、最適化2がほとんど(一部の人々は、求めることができるあなたは、モジュールレベルのメソッドをより効率的に使用している、またはコンパイラを使用した方法の効率が比較的高いこと、実際には、何の特定の結論は、ありません。ここでは、少なくとも使用する必要がある場合あなたはそれにモジュールレベルのメソッドを使用しますが、あなたは繰り返し次の正規表現を使用したい場合は、その後、あなたはそれをコンパイルすることができるでしょう、そして、より便利である、バックの呼び出しのさまざまなを使用する正規表現、私たちは、主に便利な、Pythonの学習をするので、効率、最適化の問題にもっと配慮を与えていない、と彼らはほぼ同じ最適化されています。)
##コンパイルフラグ
※コンパイラフラグので、あなたが仕事正規表現を変更できること。Perlのと略さこれらは、速記のre.VERBOSEと、同じであるので、あなたは、あなたが恵まれている、ファンであれば、たとえば、ある速記IGNORECASE I(Perlの、フルネームと略称:REモジュールでは、コンパイラフラグは、二つの名前を持っていますそれは)re.Xです。さらに、複数のフラグは、(「|」によって)同時に使用することができる、例えば:| re.M I、およびMは、セットフラグであるre.I.
以下にいくつかのサポートコンパイラフラグは次のとおりです。
マーク | 意味 |
ASCII、A | 以下のような文字をエスケープ、wは\ B、\ sおよび\ dは\ ASCII文字のみを一致させることができます |
DOTALL、S | そう。改行を含めて、任意のシンボルにマッチします |
IGNORECASE、I | 試合は大文字と小文字を区別しない場合 |
LOCAL、L | 現在の言語(ロケール)の設定をサポートしています |
MULTILINE、M | マルチラインのマッチング、影響^と$ |
VERBOSE、X(のための '拡張') | 正規表現VERBOSE有効 |
私たちは、彼らが何を意味するかを詳細に説明しましょう:
ASCII
ワット\など、\ W、\ B 、\ B、\ sのと\ S ASCII文字のみと一致しますが、ない完全一致Unicode文字。このフラグは、意味のあるUnicodeモードで、バイトモードを無視します。
S
DOTALL
改行を含む任意の文字を、一致する可能性があります。このフラグを使用しない場合は、改行を除くすべての文字に一致します。
I
IGNORECASEの
文字クラスと一致で大文字と小文字を区別しないテキスト文字列。例えば、正規表現[AZ]は、対応する小文字に一致する、などがFishC FishC、fishc又はFISHCように適合させることができます。あなたはロケールを設定しない場合、それは言語(領域)を考慮していますこの問題のケースを設定します。
L
LOCALE
W \例えば、\なくUnicodeデータベースより、現在の言語(領域)環境に応じてW、\ bおよび\ B。
ロケールは、C言語の関数であり、主な役割は、異なる言語間の差を排除することです。たとえば、あなたが言葉を一致させる+ wは\使用するフランス語のテキストを扱っているが、\でのみ一致する言葉[A-ZA-z]はwを、そして「E」または「C」を一致しません。お使いのシステムが適切にフランスの地域の環境を設定されている場合は、C言語の関数は、プログラムの「E」または「C」を教えてくれますまた、文字として考慮されるべきです。LOCALEフラグを設定する正規表現をコンパイルすると、\ W +はフランス語で識別することができますが、どのくらいの速度が影響を受けることになります。
M
MULTILINE
($ ^そして我々が言及していないが、ない心配を行い、私たちは後ろの細部に行かなければなりません...)
通常^唯一の文字列の先頭にマッチし、$は文字列の末尾にマッチします。ストリングのみ&終了をするだけでなく、それぞれの行ラインの端部に一致するように、このフラグが設定されている場合、文字列^だけでなく開始、さらに、各行の最初の行に一致します。
X-
VERBOSE
このフラグを使用すると、このフラグの使用、ので、より良く、より組織的に見えることができます正規表現を書くことができますスペースは無視されます(文字クラス以外でエスケープスペースが表示され、バックスラッシュを使用)、このフラグあなたが肯定的なコメントに文字列式を使用することを可能にしながら、#記号の後ろの内容はコメントであるとマッチングエンジン(バックスラッシュは、#文字とクラスを逃れる使用起こる除く)に提出されることはありません。
大人は非常に、非常に複雑で、犬のように死ぬためのスペースは、それが一致すると考えられるので、(正規表現のわずか中程度の複雑として、あなたは、あなただけのスペースを追加することはできません正規表現ので、それを書きますました要素は、あなたが書き込み何かを理解することは難しいと思われるので、あなたは、トリプル引用符ラップを使用することはできません、あなたはTabキーを追加することはできません、スペースを追加することはできません。しかし、あなたはVERBOSEをオンにした場合、それはスペースをサポートすることです、Tabキーをサポートし、サポートラップ、また、コメントをサポートしています。)
使用re.VERBOSE例である下に、私たちはたくさんの可読性を向上させるためにされていない正規表現を見て:
charref = re.compile(r"""
&[#] # 开始数字引用
(
0[0-7]+ # 八进制格式
| [0-9]+ # 十进制格式
| x[0-9a-fA-F]+ # 十六进制格式
)
; # 结尾分号
""", re.VERBOSE
無VERBOSEフラグ場合は、同じ正規表現は、次のように書くことができます。
charref = re.compile("&#(0[0-7]+|[0-9]+|x[0-9a-fA-F]+);")