共通モジュールの再python3-、

正規表現

定義:

正規表現は、文字で構成される論理式の文字列操作は、特定の文字の組み合わせによって事前に定義されており、これらの特定の文字、ルール文字列」、ルール文字列は文字列を表現するために使用されていますフィルタリングロジック。

 それは独立したルールで言語に依存しません。文字列でのみ扱います。

私たちにできることは何か?

1 :見つけるためにあるすべての携帯電話番号にファイルを置きます。

    #開くファイルを開きます

    #読むファイルSTR

    #の長いリストからすべての文字列検索11 桁の数字を

Aは文字で文字を読みます

2 :爬虫類、文字列のWebページから必要なデータを取得します

3 :特定のコンテンツログを抽出します

ルール

文字グループ:

[] 括弧の内容で書かれ彼らは上のルールに沿ったものである文字を、次の特定の位置に表示されます

[0-9]   マッチ番号                  

[AZ]は   小文字と一致します             

[AZ]は   大文字と一致します             

[4-9]   と一致する。4 図9 の図面を                        

[-ZA-Z] マッチ小文字         

[a-zA-Z0-9]は小文字に一致+ 数字

[-ZA-Z0-9_] マッチラインの英数字下落

 

エスケープ + メタキャラクタを

\ wは   マッチライン英数字辞退ワードキーワード[-ZA-Z0-9_]を

\ dは   任意の数値と一致する      数字[0-9]

\ Sは   空白キャリッジリターン一致/ ラインフィードタブスペースの    スペース[\ n個の\ t]を

\ W \ D \ S および\ \ D \ S W 否定

\ bは単語の境界を表し、

[\ S \ S] [\ D \ D] [\ W \ W] 3つのコーパスは意味のすべての文字にマッチします

そして、文字はエスケープに関連する メタ文字

W \ \ D \ S(\ n個の\ T)\ bは\のW \ D \ S

 

 

メタキャラクタ

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

$は文字列の末尾にマッチします

一致を示し改行以外の以外のすべての文字を

[]   限りブラケットがコンテンツに表示されるように適合させることができます

[^] 限り括弧内のないコンテンツについて一致することができないように

| B   または遵守規則またはBのルールを一致させることができます

  #場合はルールがあるのb 規則の一部およびよりルールB 過酷にルール/ 長さ置くルールEDITORIALを

  #もっと複雑な\ 一番上に書かれた長いルール

()時間の制約の数量のニーズを表現するために一緒にいくつかの文字をグループ化する同じグループにこれらの数量詞を与えます

 

数量詞

{N}は、数量詞の文字が前に表示さ表すN

{N} 前の数量詞の文字を表す少なくとも出現のn

{N、M}は、前の文字が表示される数量詞示すNM

?は文字が表示される前に、数量を表します0 回または1 回は不要表明します

+ 文字が数量詞の前に現れる表し1 回以上

* 数量が表示される前の文字を表します0 回以上

 

演習:

 

マッチ整数  \ D +

マッチ小数 \ D + \。\ D +

10進数または整数をマッチング  \ dは+ \ \ D + | 。\ D + \ D +(\ \ D +。)?

 

 

 

一致するID番号(検証ルールの脇考察):

[1-9] \ D {14}(\ dの{2} [\のdX])?

 

 

 

[1-9] \ D {16} [\のdX] | [1-9] \ dの{14}

 

 

 

 

グリードマッチ

許容の範囲内で最長の結果を取ります

非貪欲パターン / 不活性マッチバック数量詞のプラスで

 。*?xが    、それは任意の長さに出会うまで、あらゆる非改行文字にマッチするのx 停止を

文字 + 数量詞制約の連続した文字の数

文字 + 数量詞+?   制約連続した文字の最小数

文字 + 数量詞+?+ X 連続数量の範囲内の文字の制約の最小数は満たさxは直ちに停止します

 

これらは、正規表現の独自のルール、そしてあるパイソン無毛の関係

モジュール

findAll:全てのリストでそれぞれが一致する要素

 

 

 

検索:だけ右へ第1の左に一致する直接的な結果は得られないがしかし、変数この変数を介して基は方法の結果を得るために

 

一致しない場合それは戻らないだろう、どれを使用してグループを文句を言うだろう

 

 

 手順は、一般的に次のように使用されています。

 

マッチ:スクラッチ試合と同等の検索正規表現の追加します^

 

 

拡張文字列処理カッティング置き換えます

スプリット

 

 

 

 

 サブ   古い新しい交換番号

 

 

 

 

 

 SUBNはタプルを返し第2の要素は、置換の数であります

 

 

 

 

コンパイルモジュールは、時間を節約できます

直接正規表現への複数使用の過程では、バイトコードにコンパイルされ、複数のないコンパイル

 

 

 

 

 finditer 問題解決するために正規表現を使用して、スペースを節約/ メモリ

 

 

 

パケット

グループ()は、全体的なマッチングの内容を示し、グループ(NUM)は、第1一致表す NUMパケットを

インポートの再
S = "ハッピー毎日の<a> </a>の"
RES = re.search('(<\ W +>)([\ W \ Wである] +)(</ \ W +>')、S)
を印刷(res.group())  すべての結果の
印刷(res.group(1))#  は、パケット番号の数を表し
プリント(res.group(2))
プリント(res.group(3))

 

輸出

 

findAllの優先順位

= re.findall RET(| 'WWW(Baiduの。siNAの).COM' 'www.sina.com'
印刷(RET)   [ 'siNAの']#1のfindAllは、グループの試合の内容を返すように優先順位を与えるためであり、あなたは結果を一致させたい場合は、キャンセルする権限 = re.findall(RET |: '?。siNAの).COM BaiduのWWW(''www.sina.com' 印刷(RET)   #1 [「www.sina.comを「]


 

おすすめ

転載: www.cnblogs.com/tester-star/p/11608706.html