上海day15 - 正規表現とreモジュール

CONTENTS

まず、正規表現

二、再モジュール

 

 

 

まず、正規表現

正規表現の関係でモジュールを再:

  正規表現は、任意の言語を使用することができ、独立した技術ですが、あなたはPythonの正規表現を使用したい場合は、次に我々は、モジュールを再役立つはずです。

役割:正規表現は、文字列の特定のコンテンツをフィルタリングするために使用されます。

シナリオ:爬虫類、データを分析します。

文字グループ:[文字のセット]

正規表現[]によって、バーストを形成するために発生する可能性があり、同じ位置に様々な文字。

[0123456789] - 番号のいずれかに設定されたマッチング数字や文字がすべて同じ成功と一致していると

[0-9] - [0123456789]単純な表現は、数字を一致させるために使用されている限り、マッチングの一致があるのと同じデジタルに成功し

[AZ] - Zまでのすべての小文字を一致させます

[AZ] - すべて大文字に一致します

[0-9A-FA-F] - 文字セットの文字は、「または」の異なる形態は、文字セットが文字0-9 AF AFを一致させるために使用されていることです

概要:唯一の文字セットは場所に文字コンテンツにマッチします。

元の文字:のみ場所の内容と一致

1、ポイントは - 改行を除くすべての文字に一致します;

2、\ W \ S \ D

  \ W - 単語は任意の文字、数字、アンダースコアにマッチします

  \ S - スペースマッチング空白

  \ D - 桁の番号が一致

3、\ W \ S \ D

  \ W - マッチした非アルファベット、数字、またはアンダースコア

  \ S - 非空白文字の一致

  \ D - 非マッチング番号

4、\ N \ T

  \ N - 改行

  \ T - 試合タブ(Tabキーでタブです)

5、^ $ \ bの

  \ Bは - 単語の末尾にマッチ

  文字列の先頭にマッチします - ^

  試合終了文字列 - $

6、[...] [^ ...]

  文字セットの任意の文字に一致します - [...]

  [^ ...] -一致するすべての非文字の文字グループを

7、| B()

  | bが - またはbにマッチします

  () - グルーピング、括弧内の一致の発現は、パケットを述べました。

それは文字または文字のグループがある位置のみにドル文字を一致させることができるかどうかは、明らかに不適切なので、「数量詞」につながります!

数量詞:一致の数を増やすバックメタ文字に使用されます!

1、* +?

  * - 繰り返し0回以上

  + - 1回以上繰り返します

  ? - 繰り返し0または1

グラフィック:

2、{N} {N} {N、M}

  {N}は - N回繰り返されます

  {Nは} - n回繰り返さ以上

  {N、Mは} - mに対するn回繰り返します

正規表現:

 

 

二、再モジュール

一般に再モジュールに使用される方法のfindAll()()(検索一致)****

輸入「「」
のfindAll 
検索
一致
」 『』

findAll()の使用:

RES = re.findall( '[AZ] +'、 'EVAエゴンジェイソン') #のfindAll(一致する文字列を'正規表現' '') 印刷(RES) 文字列を検索に一致正規表現は、全体が、リスト内の要素のリストを返す正規試合の結果であります

検索()の使用:

RES = re.search(「A」、「EVAエゴンジェイソン」) 印刷(RES)検索#あなたがマッチング結果に直接返却しませんが、あなたにオブジェクトを与えるためには、返す
#の印刷(res.group()) #は、結果が一致した見にグループを呼び出す必要があります

"「」
:注
    限り、結果は後に見に下るないことが判明しているよう1.searchだけチェックに一度定期的に
    探しているが存在しない場合ケース2のグループの直接の結果を呼び出します与えられた
"" " 
RES1 re.search =( 'A'、 'EVAエゴンジェイソン')
#1 #検索("正規表現""「は文字列一致)RES1 IF:      印刷(res1.group( ))

マッチ()の使用:

#1 RES = re.match( 'A'、 'EVAエゴンジェイソン') 印刷(RES) 印刷(res.group())
"" " 
注:
    文字列の先頭にのみ1.match一致
    2また、グループは、Noneを与えません呼び出す一致ルールを満たしていない文字列の先頭にケースを返さ
。「」 "

モジュール他の一般的に使用される方法を再:

スプリット() :

RET = re.split( '[AB&]'、 'ABCD')プレス# ''分割され、 'BCD'はそれぞれ「B 'で、' 'と' BCD割った
#の印刷(RET )#1 [ ''、 '' 、 'CD']はリストを返すまたは

サブ():

RET = re.sub( '\のD'、 'H'、 'eva3egon4yuan4'、1)番号#が'H'に置き換え、唯一のパラメータ1に置き換え
#1 #サブ(「正規表現、 'ニューコンテンツ「」文字列を置換する」、n)は、『』 " すべての正規表現検索を追跡するためには、置き換え表現均一『にマッチする新しいコンテンツ』も数n個を交換することによって制御することができます"" " 印刷(RET)#evaHegon4yuan4

SUBN():

RET = re.subn( '\のD'、 'H'、 'eva3egon4yuan4')#デジタル'は、H'を置き換え、タプル(交換の結果、回置換の数)を返し'(RET1 = re.subnを\ D「」H「 『eva3egon4yuan4』、1)#1 デジタルで置き換え」H」、回数を置き換え、(置換結果をタプルを返す)
#1 印刷(RET)#タプルタプルを返します第2の要素は、交換の数を表します。

コンパイル():

正規表現オブジェクトにコンパイルのObj = re.compile( '\のD {}。3')#正規表現は、ルールがマッチする3桁RET = obj.search( 'abc123eeee')#正規表現オブジェクト検索呼び出し、パラメータが一致する文字列RES1 = obj.findall( "347982734729349827384") 印刷(ret.group())#結果:123 
#の印刷(RES1)#結果:[ '347'、 ' 982 '' 734 '' 729 '' 349 '' 827 '' 384「]

スプリット();

再インポート
#1 RET = re.finditer( '\のD'、 'ds3sy4784a')は、格納された照合結果#finditerイテレータ返す
#の印刷(RET)#<0x10195f940 ATオブジェクトcallable_iterator> 印刷(次へ(RET).groupを())#次__ .__ RET()と同等です())次__ .__ RET()#と等価である印刷(次(RET).groupは、
#の印刷(次(RET).group())RET#と同等です次__ .__() 印刷(次(RET).group())#次__ RET .__()と同等です
#の印刷(次(RET).group())#次__ .__ RET()と同等です
#の印刷(次(RET).group())#は.__次__()の値の範囲を超えて直接反復エラーRETと等価である
#1 印刷(次へ(RET).group())#表示最初の結果
#1 印刷(次へ(RET)を.group())#表示2番目の結果 残りの結果について印刷([RETにおけるiについてi.group()])#図

正規表現の別名に: - 式の前に追加「P?」

インポートRES = re.search( '^ [1-9](\ D {14})(\ D {2} [0-9x])?$'、 '110105199812067023') 、特定の規則的に与えることができます式別名
#1 re.search = RESを( '^ [1-9](?P <パスワード> \ D {14})(?P <名> \ D {2} [0-9x])?$' '110105199812067023') 印刷(res.group())印刷(res.group( 'パスワード')) 印刷(res.group(1)) 印刷(res.group( 'ユーザ名')) 印刷(res.group(2)) 印刷(res.group(2)) 印刷(res.group(1))

パケット優先メカニズムへの正規表現が解除され

RET1 = re.findall( 'WWW(Baiduの| Oldboy).COM。'、 'www.oldboy.com') RET2 = re.findall( 'WWW(:?。Baiduの| Oldboy).COM'、「WWW .oldboy.com「)#は、パケットの優先度機構無視
#の一致したあなたは結果を一致させたい場合は、あなたが許可を取り消すことができるのfindAllは、グループの内容を返すように優先順位を与えるためである[Oldboy「](RET1、RET2)#印刷」を

正規表現を使用して、分割()メソッドパケット()異なる効果

RET = re.split( "\ D +"、 "eva3egon4yuan")
#1 プリント(RET)#1结果:[ 'EVA'、 'エゴン'、 '元'] #
 RET1 = re.split( "(\ D +) 」、 "eva3egon4yuan")
#1 プリント(RET1)#1结果:[ 'EVA'、 '3'、 'エゴン'、 '4'、 '元']

 

 

 

 

おすすめ

転載: www.cnblogs.com/qinsungui921112/p/11202528.html