1.正規表現の構文
1.1文字と文字クラス
。1特殊文字:^ $ + * {} [ ]()|?
以上の特殊文字リテラルを使用するためにエスケープしなければならない
2つの文字クラス
1は、一つ以上[]に含まれていますあなたが唯一の試合で試合数量詞を指定しない場合、文字は文字クラス、文字クラスと呼ばれています。
2.クラスは、[-ZA-Z0-9]として、範囲指定可能な文字は、Zに表し、Z、0から9の間の任意の文字にA
^後に左括弧が続く3は、拒否を示しますこうした[^ 0-9]マッチなどの文字クラスは、任意の数字以外の文字を表します。
4.内部文字クラスは、加えて、その他の特殊文字は、もはや特別な意味を持っていない、それは文字通り表明しています。^第1の位置で他の位置に、否定を表す^自体を表す-自身-次いで中間範囲、最初の文字クラスの文字を表します。
内部速記文字クラスは、DSWとして、使用することができる
。3速記
。re.DOTALLフラグは、改行を含む任意の文字と一致する場合、改行以外の任意の文字にマッチし
、バンドの再場合、D一致ユニコード番号。 ASCII、マッチ0-9
Dユニコード非マッチング番号
の一致ユニコードre.ASCIIとのマッチングがあればブランク
ユニコード非マッチングギャップをだ
Unicode文字の単語に一致wはre.ascii有する場合、一致、[中-ZA-Z0-9_]
Wは、非Unicode文字のリストに一致します
1.2数量詞
1.?直前の文字0又は1マッチ
2 *は直前の文字を0回以上一致
3つの+ 1マッチ先行文字倍以上
4 {M} m回一致直前式
5 {mは}少なくともm個前の表現と一致
6. {n}は最大nマッチング前の正規表現
7 {M、N}少なくともm回一致先行する正規表現を、最もN
注意事項:
より多くの数量は、あなたが後ろに数量詞が続く非貪欲モードを変更したい場合は、可能な限り一致する、欲張りですか達成するために
1.3グループとキャプチャ
1()アクション:
1.キャプチャ()、さらに処理用の正規表現の内容、あなたは括弧オフに左括弧:?キャプチャ機能の後ろに続くことができる
2.正規表現を組合せの一部、数量詞を使用するために又は|
2つの応答は、以前の内部コンテンツ()捕捉引用:
1.グループの数が基準を反転を
それぞれが使用されない:括弧は、左から、1から開始し、良いのグループが割り当てられています?右へ増分は、I式によって捕捉内)前にこの中に(挙げることができる
前群名で括弧内で参照2.逆キャプチャされたコンテンツは、
アングルブラケットが配置され、左括弧の後に続くことができますか?P <名前>グループのグループ名(?P =名)、続いて別名に以前にキャプチャの内容を参照します。(+ W?P <ワード>のように )、S +は(?P =語) の単語に一致するように繰り返されます。
3点に注意してください。
文字クラス[]内に配置されていない後方参照が使用されます。
1.4で標識されたアサーション
アサーションテキストのいずれとも一致しない、テキストのみ一定の制約アサーションに適用される
一般的なアサーション:
境界1.マッチング単語、文字クラスの[] Backspaceキーを示し
、2 Bが非ワード境界と一致ASCIIタグによって効果
3.開始時の一致
4. ^開始時に一致、もし複数行フラグ、各改行後のマッチング
の終了時に5 Zマッチング
一致の終わりに6 $、もしそこMULTILINEフラグ、前各改行のマッチング
7.(?= e)のn個の展望
8.(?!e)の負の展望
9.(?<= E)のnレビュー
10.(?<!e)に否定的なレビュー
2前向きな検討を説明する
プレビュー:EXP2と一致するように、コンテンツEXP1背後EXP1(?= EXP2)
負プレビュー:コンテンツEXP1背後EXP1はEXP2(EXP2を?!)と一致していないが
振り返る:EXP1(<= EXP2?) EXP1 に以前の内容EXP2一致する
コンテンツEXP1のEXP1フロントEXP2一致していません(<EXP2?!)は:振り返ってみると、負の
例を:「(こんにちは)S +(:我々は、ハローを探しているが、ハロー世界を従わなければならない、正規表現は次のように書くことができる =世界?) こんにちはHello World「の後者のみに一致させることができるハローwangxing「を一致させる」「と」
1.5条件の一致
((ID)yes_exp | no_exp? ):コンテンツがyes_expを一致させるためにここにある場合は一致するように、対応するサブ表現のID、それ以外のマッチno_exp
1.6正規表現フラグ
2つの方法で使用フラグ1.正規表現
DA-例えばre.compileとして分割方法、(R「#[| 1フラグパラメータ渡し、使用される複数のフラグをコンパイルする方法 F 。] {} 6」、re.IGNORECASE | re.MULTILINE)
?2フラグを積極的に正規表現を上記式(フラグ)を添加することによって、例えば(MS)#[DA-Z ] {6}?
2サイン一般
re.A又はre.ASCII、DのD W W B S Sように、文字列の文字列がASCII想定される想定される
re.I re.IGNORECASEをまたは正規表現の場合を無視する
re.Mまたは再.MULTILINEマッチ複数の行、すべてのキャリッジ後の各^、各キャリッジ各マッチの$の前に
re.S有効またはre.DOTALL。輸送を含む任意の文字と一致
re.Xまたは再。複数行にわたるVERBOSEこの式は正で、あなたもコメントを追加できますが、空白のデフォルトが説明されることはありませんので、ギャップは、または[]表現するためにSを使用する必要があります。以下のような:
re.compile(R&LT "" "
<IMGS +)#開始タグ
[^>] *#のsrc属性ではないのですか?
SRC =#のsrc属性を開始します
(:?
?(P <引用> ["「]) #開始引用符
(?P <イメージ名>
(?P =引用)#の閉じ括弧
""」、re.VERBOSE | re.IGNORECASE)
2. Pythonの正規表現モジュール
2.1の正規表現の取り扱い文字列の4つの主要な機能があります
文字列は、一般的なリターンとラインに真または偽の正規表現の構文と一致するかどうかを確認1.
2.文字列を抽出する正規表現を取得しますテキストの要件を満たし
3.正規表現に一致する代替テキスト文字列を検索し、対応する文字列に置き換え
4.分割正規表現文字列を分割します。
2.2 Pythonは、正規表現を使用して二つの方法でモジュールを再
1 re.compile(R、F)正規表現オブジェクトを生成する方法を、その後、正規表現オブジェクトに適切なメソッドを呼び出します。このアプローチの利点は、通常のオブジェクトを生成した後に複数回使用することができることです。
各モジュール正規表現オブジェクトメソッド方法2 REモジュールは、対応するオブジェクトがあり、唯一の違いは、最初の引数が正規表現文字列であることです。このメソッドは、正規表現の一回の使用に適しています。
2.3方法は、正規表現オブジェクトの使用
1. rx.findall(S、開始、終了を ):
パケットが正規表現ではない場合、リストを返し、リストは、すべてのコンテンツが一致している含まれ
た正規表現がある場合パケットは、リスト内の各要素は、タプルはタプルが一致したサブパケットの内容に含まれているが、正規表現マッチングの内容全体が返さない
2 rx.finditerを(S、終了、開始 ):
戻りますイテレータオブジェクト
イテラブルを反復するために、コンテンツを表示するために、指定されたグループに一致するオブジェクトの整合グループ()メソッドを呼び出して、各時間一致するオブジェクトを返し、0は、コンテンツにマッチする正規表現全体を示しています
3. rx.search(S、開始、終了 ):
、一致するオブジェクトを返します。一致しない場合、それはなし返し
一旦停止マッチングの探索方法を、次のマッチングに続行されません
、4 rx.match(S、スタートエンド):
正規表現は、文字列の先頭と一致する場合、それはどれもそうでない場合は、一致するオブジェクトを返さない
rx.sub 5(X、S、M):
文字列を返します。各マッチングはXにより置換される場合、m倍まで、Mを指定し、交換を置換文字列を返します。X / Iまたは/ G <ID>のために使用することができるIDは、キャプチャされたコンテンツを参照する番号またはグループの名前であってもよいです。
モジュール方式re.sub×(R、X、S 、M) 関数を使用することができます。この時点では、マッチしたテキストを交換する前にキャプチャされたコンテンツを処理するために、この関数を使用してプッシュすることができます。
Rx.subn 6(X、S、M):
()と同じ方法re.sub、その文字列の結果であるタプルを返す以外は、代替の数が行うことです。
7. rx.split(S、M):セグメント列は、
のリストを返し
、文字列の内容に一致する正規表現が分割され
たパケットの存在下での正規表現ならば、パケットは、コンテンツ毎にリストを置くために一致します2のような、リストの一部として分割中間体:
RXはre.compile(R&LT "(D)[AZ] +(D)")=
S = "ab12dk3klj8jk9jks5"を
結果= rx.split(S)
リターン[ 'のAb1'、 '2'、 'KLJ'、 'jks5' '3' ' 8' 」9' ]
8. rx.flags():正規表現コンパイラフラグがセット
表現コンパイラで使用される文字列:9 rx.patternを()
あなたがプログラミングの世界ではまだ混乱している場合は、Pythonのバックルqun学ぶために私たちに参加することができます:784758214を、高齢者が学んでいる方法を見て。経験の交換。基本的なWeb開発Pythonスクリプトから、爬虫類、ジャンゴ、データマイニングや他のプロジェクトへのゼロベースのデータを戦うために仕上げています。どんな小さなPythonのパートナーに与えられました!いくつかの学習方法を共有し、細部に注意を払う必要があり、私たちの参加をクリックしてのpython学習者を集める
2.4マッチングオブジェクトのプロパティとメソッドを
01 m.groupを(グラムを、...)
内容と一致する番号またはグループ名を返し、デフォルトまたは0は、コンテンツへの全体の発現の一致は、複数の指定された場合、タプルを返すことを示している
02. m.groupdict(デフォルト)
辞書を返します。辞書のキーは、すべての名前付きグループのグループ名では、グループがコンテンツをキャプチャにちなんで命名され
、デフォルトのパラメータがある場合、それは試合に関与していない人のためのデフォルト値として設定されています。
03. m.groups(デフォルト)
タプルを返します。グループのコンテンツキャプチャしない値としてデフォルト値が指定されている場合、この値、最初から、サブグループにキャプチャされたすべてのコンテンツが含まれています
)04. m.lastgroupを(
最も高い番号のキャプチャグループの内容にマッチした名前そこにはあるのか全くなしが返されない場合の名前使用して(使用されません)
05. m.lastindex()
Noneを返していない場合は、最も大きい番号のキャプチャグループのコンテンツの数に一致します。
06. m.start(G):
一致が現在のセットに含まれない場合は、一致する文字列の先頭から現在のサブパケットマッチングオブジェクト-1
07. m.end(G)
現在のグループが一致リターン-1に関与していない場合は、一致する文字列の現在位置から目的に合致するサブパケットが、終了する
)08. m.span(
タプルを返し、コンテンツがありましたm.start(g)およびm.end(G)の戻り値である
09 m.re()
正規表現に一致するオブジェクトを生成する
10 m.stringを()
文字を検索するための一致または一致に送信されます文字列
11. m.pos()
検索の開始。つまり、文字列の先頭、または指定した開始(未使用)の位置
12 m.endpos()
検索の終了位置。すなわち、文字列の末尾、または指定された終了位置(未使用)
2.5まとめ
1.正規表現マッチングのための方法を、Pythonは値を返すために、真と偽の戻りではなく、一致させることができ、または検索処理Aでありますいずれも決定しない
正規表現2.検索を、検索時間はオブジェクトの一致または一致検索方法復帰を得た場合にのみ使用することができ、アクセス方法finditer複数イテレート可能オブジェクトを検索するために使用され得る反復返す
正規表現3.式の交換機能、または目的を達成するために、サブSUBN正規表現方法を使用することができ、置換テキストサブ処理モジュールを生成する関数を使用してもよいことを除いて、モジュールまたはサブSUBN方法を再によって達成することができます
4.正規表現の分割機能について、あなたは正規表現オブジェクトの分割方法を使用することができ、あなたはパケットが正規表現オブジェクトがある場合は注意を払う必要があり、その後、パケットキャプチャの内容が返されたリストを配置します