ホームページ >バックエンド開発 >Python チュートリアル >Python標準ライブラリのreモジュールを学習するための詳細な紹介
re モジュールは一連の強力な 正規表現 (正規表現) ツールを提供しており、これを使用すると、指定された string が指定されたパターンに一致するかどうか (matchfunction)、またはこのパターンが含まれているかどうか (search 関数) を迅速にチェックできます。 。正規表現は、コンパクトな (そして神秘的な) 構文で記述された文字列パターンです。
共通のメソッド | 説明 |
---|---|
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 回照合します |
特殊文字をエスケープします | |
[] | は、文字セットを表すために使用されます結合します |
| | または、を表します左または右の任意の一致 |
文字列の先頭から一致する場合は Match オブジェクトのインスタンスを返し、一致しない場合は None を返します。 Flags はマッチング モード (後述) であり、正規表現のマッチング方法を制御するために使用されます。
import re a = 'abcdefg'print re.match(r'abc', a) # 匹配成功print re.match(r'abc', a).group()print re.match(r'cde', a) # 匹配失败>>><_sre.SRE_Match object at 0x0000000001D94578> >>>abc >>>None
文字列内で正常に一致する部分文字列を検索するために使用され、見つかった場合は Match オブジェクトのインスタンスを返し、それ以外の場合は None を返します。
import re a = 'abcdefg'print re.search(r'bc', a)print re.search(r'bc', a).group()print re.search(r'123', a) >>><_sre.SRE_Match object at 0x0000000001D94578> >>>bc >>>None
Replace、パターンに一致する文字列の部分をreplでcount回まで置き換えます(残りの一致は処理されません)、その後、置き換えられたものを返します弦。
import re a = 'a1b2c3'print re.sub(r'\d+', '0', a) # 将数字替换成'0'print re.sub(r'\s+', '0', a) # 将空白字符替换成'0'>>>a0b0c0 >>>a1b2c3
は、新しい文字列と一致の数を含むタプルを返すことを除いて、sub()関数と同じです
import re a = 'a1b2c3'print re.subn(r'\d+', '0', a) # 将数字替换成'0'>>>('a0b0c0', 3)
通常バージョンのsplit()は、パターンに一致する部分文字列を使用して文字列を分割します。パターンで括弧が使用されている場合、パターンに一致する文字列も返されます。値リストの一部である maxsplit は、最も分割された文字列です。
import re a = 'a1b1c'print re.split(r'\d', a)print re.split(r'(\d)', a) >>>['a', 'b', 'c'] >>>['a', '1', 'b', '1', 'c']
pattern に一致する string 内の重複しない部分文字列をリストの形式で返します。
import re a = 'a1b2c3d4'print re.findall('\d', a) >>>['1', '2', '3', '4']
re.match() と re.search() が正常に一致すると、一致に関する多くの情報を含む Match オブジェクトが返されます。これらの情報を取得するには一致します。例:
>>>import re >>>str = 'he has 2 books and 1 pen' >>>ob = re.search('(\d+)', str) >>>print ob.string # 匹配时使用的文本 he has 2 books and 1 pen >>>print ob.re # 匹配时使用的Pattern对象 re.compile(r'(\d+)') >>>print ob.group() # 获得一个或多个分组截获的字符串 2 >>>print ob.groups() # 以元组形式返回全部分组截获的字符串 ('2',)
Pattern オブジェクトは、re モジュール内に同じ名前のメソッドが多数ある re.compile() によって返され、これらのメソッドは同様の機能を持ちます。例:
>>>import re >>>pa = re.compile('(d\+)') >>>print pa.split('he has 2 books and 1 pen') ['he has ', '2', ' books and ', '1', ' pen'] >>>print pa.findall('he has 2 books and 1 pen') ['2', '1'] >>>print pa.sub('much', 'he has 2 books and 1 pen') he has much books and much pen
>>>pa = re.compile('abc', re.I) >>>pa.findall('AbCdEfG') >>>['AbC']
など)、つまりすべての英語の文字と数字。フランス語環境で使用した場合、一部のフランス語文字列は一致しません。このLオプションを追加するとマッチングできます。ただし、これは中国語環境ではあまり役に立たないようです。それでも中国語の文字と一致することはできません。 w
,在英文环境下,它代表[a-zA-Z0-9]
>>>pa = re.compile('^\d+') >>>pa.findall('123 456\n789 012\n345 678') >>>['123'] >>>pa_m = re.compile('^\d+', re.M) >>>pa_m.findall('123 456\n789 012\n345 678') >>>['123', '789', '345']
.
号将匹配所有的字符。缺省情况下.
匹配除换行符\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*")# 但是在这个模式下,如果你想匹配一个空格,你必须用'/ '的形式('/'后面跟一个空格)
以上がPython標準ライブラリのreモジュールを学習するための詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。