前回、多くの友人がテキスト ブロックについて書いたとき、彼らは正規表現の使用について話しました。実際、私は正規表現を使いたくないわけではありません (私は正規表現をあまり使いません。前回の私の記事を見た人は誰でも構いません)。クローラーは、私が BeautifulSoup の Web タグを直接使用してコンテンツを検索していることを知っています。それは簡単です) 理解するのは簡単ですが、通常のルールを習得するのは困難です (通常のテーブルを読んだことがある人なら、シンボルに対応する多くのメソッド ルールがあることを知っているはずです)これは非常に柔軟です)。プログラミングに長い間触れていない友人にとっては、プログラミングのプロセスで多くの時間が無駄になる可能性が非常に高いです。これらは非常に特殊なので、基本的には使用されます。
1. 正規表現の簡単な紹介
まず、正規メソッド import re をインポートする必要があります。正規表現は、独自の独立した処理メカニズムを備えており、str ほど効率的ではない場合があります。しかし、この関数は非常に柔軟で強力です。その動作プロセスは、まず照合ルール (「必要なコンテンツ + 通常の文法ルール」) を定義し、照合する文字列を入力してから、通常のルールの内部メカニズムを通じて必要な情報を取得します。
2. findall の一般的に使用されるいくつかの姿勢
基本的な構造は大まかに次のとおりです: nojoke = re.findall(r'matching rules','string to be requested') nojoke は正規表現を通じて最終的に返される結果です。 re Regular findall は、次の通常のステートメントを表すすべての r フラグを検索します (これにより、コードが大量にある場合に確認が容易になります) より深く理解するためにいくつかの例を見てみましょう
このコードは、検索するものです。検索文字列 bi 内のすべてのステートメントを検索し、それをリスト形式で返します。これは、統一された文字の出現数をカウントするためによく使用されます。続けて次の文字列を見てください
ここに記号 ^ が追加され、abi で始まる文字列と一致する文字列が返されることを示します。また、文字列が abi で始まるかどうかを判断することもできます。
ここで、$ 記号は、文字列が終了するかどうかを判断するために、gbi で終わる文字列の戻りを表すために使用されます。
ここで [...] は、括弧内の a と f、または b と f、または c と f の値を照合してリストを返すことを意味します。
「d」は、0 から 9 までの数値を照合してリストを返すために使用される通常の文法規則です。11 は、文字列を返すのではなく、「1」と「1」の文字列として返されることに注意してください。キャラクター「11」の串、間違って使用すると大きな落とし穴があることに注意してください。
もちろん、解決策は、必要なだけ多くの桁を取得するために、必要な数の d を記述することです。これは、文字列内の 3 桁を取得する方法を示しています。これは、正規表現の柔軟性を示しています。
ここでの小さな d は 0 ~ 9 の数字を取ることを意味し、大きな D は数字が必要ないこと、つまり数字以外のコンテンツが返されることを意味します。
正規表現の「w」は、小文字の a から z、大文字の A から Z までの一致を表し、上に表示されているように、0 から 9 の数字には最初の 3 つが含まれます。正規表現 文字や数字以外の特殊な記号を照合することを意味しますが、ここでスラッシュを使用する場合は、文字列がエスケープ記号であることに注意する必要があります。詳しくは、Baidu でご覧ください。
ここでの大括弧 () の使用は、大括弧内のコンテンツを取得することを意味します。ここで、* は通常の貪欲一致構文です。重要な点は、次に示すように、貪欲な利点と一致基準の最大範囲を最大化することです。上の図。
ここに疑問符が追加されます。*?最大範囲にマッチングを制限することであり、非貪欲パターンマッチングとも呼ばれます。結果は、2 つの p の内容を照合して返します。
ここで re.I (大文字の i) を追加すると、男性、女性の大文字と小文字に関係なく一致する必要があることを意味します。そうしないと、後ろに大文字と小文字がある場合、上記の一致は見つからず、空になります。リストが返されます。
ここでの問題は、一般に改行文字として知られる n です。一度改行が入力されると、プログラムはそれを認識しなくなるため、改行を含むすべての文字の戻りを表すために re.S (大文字) を追加しました。基本的に上記の文法と使い方を学べば、対応するメソッドの 70% 以上を取得できます。もちろん、ここに挙げていないメソッドもたくさんあります。残りはほとんど使用しません。
2. match と search の使用法と違い:
re.match は、文字列の開始位置からのマッチングを試みますが、開始位置でのマッチングが成功しなかった場合、match() は none を返します。 re.search は文字列全体をスキャンし、最初に一致したものを返します。コードを見てみるとわかりやすいですね。以下の通りです:
ここでは、末尾を直接出力し、一致する文字列の位置を取得してタプルとして返す .span() を追加します。空を返し、それを追加するとコンパイラがエラーを報告しました。
一目瞭然でしょうか? match は先頭のみに一致します。追加した場合、戻り値は null なので、ここには追加しません。場合、コンパイラはエラーを報告します。検索は選択的ではなく、全体をスキャンします。もちろん、ここではあまり紹介しませんが、上記の通常の方法を使用して、自分で練習することもできます。
3. sub 置換の使用法
sub は、文字列内の一致する項目を置換するために使用されます。構文は通常 re.sub(r'正規の一致ルール','置換された文字列'、取得する必要がある文字列です。 )
# 記号とそれに続く文字列を変更したい文字列に置き換えると、結果が直感的にここに反映されます。
4. 最後の特典
最後の特典を与える前に、皆さんがもっと失敗してまとめることによってのみ、最後の特典が与えられます。一般的に使用されるメール アドレスの一致ルールは次のとおりです:
以上がPython の正則化を使用するための図解ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。