目次
1. 一般的なメソッド
2. 特殊な文字の一致
3. モジュールメソッド
re.match(pattern, string, flags=0)
search(pattern, string, flags=0)
sub(pattern, repl, string, count=0, flags=0)
subn(pattern, repl, string, count=0, flags=0)
split (pattern, string, maxsplit=0, flags=0)
findall(pattern, string, flags=0)
4. Match オブジェクト
5. Pattern オブジェクト
6. マッチングパターン値は、re.I | re.M のように、ビット単位の OR
ホームページ バックエンド開発 Python チュートリアル Python標準ライブラリのreモジュールを学習するための詳細な紹介

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

Mar 21, 2017 am 09:15 AM

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 までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は? Apr 01, 2025 pm 05:09 PM

    LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

    あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は? Apr 01, 2025 pm 11:15 PM

    PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

    プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は? Apr 02, 2025 am 07:18 AM

    10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

    中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? 中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか? Apr 02, 2025 am 07:15 AM

    fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

    正規表現とは何ですか? 正規表現とは何ですか? Mar 20, 2025 pm 06:25 PM

    正規表現は、プログラミングにおけるパターンマッチングとテキスト操作のための強力なツールであり、さまざまなアプリケーションにわたるテキスト処理の効率を高めます。

    uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? uvicornは、serving_forever()なしでhttpリクエストをどのように継続的に聞いていますか? Apr 01, 2025 pm 10:51 PM

    UvicornはどのようにしてHTTPリクエストを継続的に聞きますか? Uvicornは、ASGIに基づく軽量のWebサーバーです。そのコア機能の1つは、HTTPリクエストを聞いて続行することです...

    文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? 文字列を介してオブジェクトを動的に作成し、Pythonでメソッドを呼び出す方法は? Apr 01, 2025 pm 11:18 PM

    Pythonでは、文字列を介してオブジェクトを動的に作成し、そのメソッドを呼び出す方法は?これは一般的なプログラミング要件です。特に構成または実行する必要がある場合は...

    人気のあるPythonライブラリとその用途は何ですか? 人気のあるPythonライブラリとその用途は何ですか? Mar 21, 2025 pm 06:46 PM

    この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

    See all articles