ホームページ >バックエンド開発 >Python チュートリアル >Python標準ライブラリのreモジュールを学習するための詳細な紹介

Python標準ライブラリのreモジュールを学習するための詳細な紹介

高洛峰
高洛峰オリジナル
2017-03-21 09:15:062100ブラウズ

re モジュールは一連の強力な 正規表現 (正規表現) ツールを提供しており、これを使用すると、指定された string が指定されたパターンに一致するかどうか (matchfunction)、またはこのパターンが含まれているかどうか (search 関数) を迅速にチェックできます。 。正規表現は、コンパクトな (そして神秘的な) 構文で記述された文字列パターンです。

1. 一般的なメソッド

subn(pattern, repl , string, count=0, flags=0)タプルに変換しますescape(string)文字と数字を除く文字列内のすべての文字を置き換えます。

2. 特殊な文字の一致

共通のメソッド 説明
match(pattern, string, flags=0) 文字列 string の先頭が正規表現パターンと一致する場合、対応する MatchObject のインスタンス、それ以外の場合は None が返されます。
search(pattern, string, flags=0) は、正規表現パターンに一致する位置があれば、MatchObject のインスタンスを返します。それ以外の場合は、None が返されます。
sub(pattern, repl, string, count=0, flags=0) count 回までの string の部分を repl に置き換えます。
subと同様に、subnは置換された文字列と一致する時刻の配列を返します
split(pattern, string, maxsplit=0, flags=0) pattern に一致する文字列を使用して文字列を分割します
findall(pattern, string, flags=0) Returnリスト形式の文字列内のパターンに一致する文字列
compile(pattern, flags=0)compile(pattern, flags=0) 正規表現パターンを正規のオブジェクトにコンパイルします。使用される正規オブジェクトの一致および検索メソッド
purge() 正規表現キャッシュ
文法 説明
. は改行を除く任意の文字と一致します
^ ヘッダーの一致
$ テールマッチング
* 前の文字と0回以上一致
+ 前の文字と1回以上一致
? 前の文字と0回以上一致
{m,n } 前の文字を m 回から n 回照合します
特殊文字をエスケープします
[] は、文字セットを表すために使用されます結合します
| または、を表します左または右の任意の一致

3. モジュールメソッド

re.match(pattern, string, flags=0)

文字列の先頭から一致する場合は Match オブジェクトのインスタンスを返し、一致しない場合は None を返します。 Flags はマッチング モード (後述) であり、正規表現のマッチング方法を制御するために使用されます。

import re

a = &#39;abcdefg&#39;print re.match(r&#39;abc&#39;, a)  # 匹配成功print re.match(r&#39;abc&#39;, a).group()print re.match(r&#39;cde&#39;, a)  # 匹配失败>>><_sre.SRE_Match object at 0x0000000001D94578>
>>>abc
>>>None

search(pattern, string, flags=0)

文字列内で正常に一致する部分文字列を検索するために使用され、見つかった場合は Match オブジェクトのインスタンスを返し、それ以外の場合は None を返します。

import re

a = &#39;abcdefg&#39;print re.search(r&#39;bc&#39;, a)print re.search(r&#39;bc&#39;, a).group()print re.search(r&#39;123&#39;, a)

>>><_sre.SRE_Match object at 0x0000000001D94578>
>>>bc
>>>None

sub(pattern, repl, string, count=0, flags=0)

Replace、パターンに一致する文字列の部分をreplでcount回まで置き換えます(残りの一致は処理されません)、その後、置き換えられたものを返します弦。

import re

a = &#39;a1b2c3&#39;print re.sub(r&#39;\d+&#39;, &#39;0&#39;, a)  # 将数字替换成&#39;0&#39;print re.sub(r&#39;\s+&#39;, &#39;0&#39;, a)  # 将空白字符替换成&#39;0&#39;>>>a0b0c0
>>>a1b2c3

subn(pattern, repl, string, count=0, flags=0)

は、新しい文字列と一致の数を含むタプルを返すことを除いて、sub()関数と同じです

import re

a = &#39;a1b2c3&#39;print re.subn(r&#39;\d+&#39;, &#39;0&#39;, a)  # 将数字替换成&#39;0&#39;>>>(&#39;a0b0c0&#39;, 3)

split (pattern, string, maxsplit=0, flags=0)

通常バージョンのsplit()は、パターンに一致する部分文字列を使用して文字列を分割します。パターンで括弧が使用されている場合、パターンに一致する文字列も返されます。値リストの一部である maxsplit は、最も分割された文字列です。

import re

a = &#39;a1b1c&#39;print re.split(r&#39;\d&#39;, a)print re.split(r&#39;(\d)&#39;, a)

>>>[&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]
>>>[&#39;a&#39;, &#39;1&#39;, &#39;b&#39;, &#39;1&#39;, &#39;c&#39;]

findall(pattern, string, flags=0)

pattern に一致する string 内の重複しない部分文字列をリストの形式で返します。

import re

a = &#39;a1b2c3d4&#39;print re.findall(&#39;\d&#39;, a)

>>>[&#39;1&#39;, &#39;2&#39;, &#39;3&#39;, &#39;4&#39;]

4. Match オブジェクト

re.match() と re.search() が正常に一致すると、一致に関する多くの情報を含む Match オブジェクトが返されます。これらの情報を取得するには一致します。例:

>>>import re

>>>str = &#39;he has 2 books and 1 pen&#39;
>>>ob = re.search(&#39;(\d+)&#39;, str)

>>>print ob.string  # 匹配时使用的文本
he has 2 books and 1 pen

>>>print ob.re # 匹配时使用的Pattern对象
re.compile(r&#39;(\d+)&#39;)

>>>print ob.group()  # 获得一个或多个分组截获的字符串
2

>>>print ob.groups()  # 以元组形式返回全部分组截获的字符串
(&#39;2&#39;,)

5. Pattern オブジェクト

Pattern オブジェクトは、re モジュール内に同じ名前のメソッドが多数ある re.compile() によって返され、これらのメソッドは同様の機能を持ちます。例:

>>>import re
>>>pa = re.compile(&#39;(d\+)&#39;)

>>>print pa.split(&#39;he has 2 books and 1 pen&#39;)
[&#39;he has &#39;, &#39;2&#39;, &#39; books and &#39;, &#39;1&#39;, &#39; pen&#39;]

>>>print pa.findall(&#39;he has 2 books and 1 pen&#39;)
[&#39;2&#39;, &#39;1&#39;]

>>>print pa.sub(&#39;much&#39;, &#39;he has 2 books and 1 pen&#39;)
he has much books and much pen

6. マッチングパターン値は、re.I | re.M のように、ビット単位の OR

'|' を使用できます。いくつかの一般的なフラグ。

re.I(re.IGNORECASE): 大文字と小文字を無視します
  • >>>pa = re.compile(&#39;abc&#39;, re.I)
    >>>pa.findall(&#39;AbCdEfG&#39;)
    >>>[&#39;AbC&#39;]

re.L(re.LOCALE): 文字セットのローカリゼーション
  • この機能は、文字セットの多言語バージョンをサポートすることです使用環境 (
  • エスケープ文字

など)、つまりすべての英語の文字と数字。フランス語環境で使用した場合、一部のフランス語文字列は一致しません。このLオプションを追加するとマッチングできます。ただし、これは中国語環境ではあまり役に立たないようです。それでも中国語の文字と一致することはできません。 w,在英文环境下,它代表[a-zA-Z0-9]

re.M(re.MULTILINE): 複数行モード、'^' と '$' の動作を変更します
  • >>>pa = re.compile(&#39;^\d+&#39;)
    >>>pa.findall(&#39;123 456\n789 012\n345 678&#39;)
    >>>[&#39;123&#39;]
    
    >>>pa_m = re.compile(&#39;^\d+&#39;, re.M)
    >>>pa_m.findall(&#39;123 456\n789 012\n345 678&#39;)
    >>>[&#39;123&#39;, &#39;789&#39;, &#39;345&#39;]

re.S(re.DOTALL): 一致するモードをクリックします、「 . 」の動作を変更します

      .号将匹配所有的字符。缺省情况下.匹配除换行符\n外的所有字符,使用这一选项以后,点号就能匹配包括换行符的任何字符。

    • re.U(re.UNICODE): 根据Unicode字符集解析字符

    • re.X(re.VERBOSE): 详细模式

    # 这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。以下两个正则表达式是等价的a = re.compile(r"""\d +  # the integral part
                       \.    # the decimal point
                       \d *  # some fractional digits""", re.X)
    b = re.compile(r"\d+\.\d*")# 但是在这个模式下,如果你想匹配一个空格,你必须用&#39;/ &#39;的形式(&#39;/&#39;后面跟一个空格)


    以上がPython標準ライブラリのreモジュールを学習するための詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。