ホームページ  >  記事  >  バックエンド開発  >  Python の正規表現とその一般的な一致関数の概要

Python の正規表現とその一般的な一致関数の概要

Go语言进阶学习
Go语言进阶学习転載
2023-07-25 17:17:081563ブラウズ

/はじめに/

Python はバージョン 1.5 以降、 re モジュールを追加しました。 Perl スタイルの正規表現パターンを提供します。 re モジュールを使用すると、Python 言語ですべての正規表現関数を使用できるようになります。

コンパイル関数は、パターン文字列とオプションのフラグ パラメーターに基づいて正規表現オブジェクトを生成します。このオブジェクトには、正規表現の一致と置換のための一連のメソッドがあります。

re モジュールには、これらのメソッドと同一の関数も用意されており、これらの関数は最初の引数としてパターン文字列を取ります。


/re.match 関数/

re.match は、文字列の開始位置からパターンを照合しようとします。開始位置で照合が成功しなかった場合、match() は none を返します。構文は次のとおりです。

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

「pattern」は正規表現「string」と一致し、文字列「flags」は一致するフラグと一致します。

一致が成功した場合、 re.match メソッドは一致するオブジェクトを返し、それ以外の場合は None を返します。

group(num) または groups() マッチング オブジェクト関数を使用して、マッチング式を取得できます。

    group(num=0) 匹配的整个表达式的字符串,“group()”可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。

下图是个实际例子:

Python の正規表現とその一般的な一致関数の概要

输出结果如下图所示:

Python の正規表現とその一般的な一致関数の概要


/检索和替换/

    Python 的re模块提供了re.sub用于替换字符串中的匹配项。语法如下所示:

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

参数:

    pattern : 正则中的模式字符串。

    repl : 替换的字符串,也可为一个函数。

    string : 要被查找替换的原始字符串。

    count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

    flags : 编译时用的匹配模式,数字形式。

前三个为必参数,后两个为可选参数。

下图是个实际例子:

Python の正規表現とその一般的な一致関数の概要

输出结果如下图所示:

Python の正規表現とその一般的な一致関数の概要


/compile函数/

    compile 函数用于编译正则表达式,供match() 和 search() 这两个函数使用。语法格式为:

re.compile(pattern[, flags])

参数:

    pattern : 一个字符串形式的正则表达式

    flags 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

    re.I 忽略大小写

re.L は、現在の環境に依存する特殊文字セット \w、\W、\b、\B、\s、\S を表します。 M その他の行パターン

re.S は「.」と改行を含む任意の文字です (「.」には改行は含まれません)

# re .U は特殊文字セット \w、\W、\b、\B、\d、\D、\s、\S を表し、Unicode 文字属性データベース

に依存します。 re.X 読みやすくするために、「#'

/正規表現オブジェクト/

」の後のスペースとコメントを無視してください。 re.RegexObject: re.compile() は RegexObject オブジェクトを返します。

re.MatchObject: group() は、RE によって一致した文字列を返します。

start() 一致の開始位置を返します

end() 一致の終了位置を返します

scan() は、一致の位置 (開始、終了) を含むタプルを返します。

#/正規表現修飾子 - オプションのフラグ/

正規表現には、一致パターンを制御するためのオプションのフラグ修飾子をいくつか含めることができます。修飾子はオプションのフラグとして指定されます。複数のフラグはビット単位の OR(|) で指定できます。たとえば、re.I| re.M は I フラグと M フラグに設定されます:

re.Sre.U

##re.I

一致の大文字と小文字を区別しないようにします

#re.L

ローカリゼーション認識 (

locale-aware) マッチング

re.M

複数行の一致、

^ および # # に影響# $

# #Make
.

改行を含むすべての文字に一致します

Unicode

文字セットに従って文字を解析します。このフラグは \w、\W、\b、\B に影響します。

re. 正規表現は理解しやすいように書かれています。


#/正規表現パターン/

## パターン文字列は、特別な構文を使用して正規表現を表します。


# 文字と数字はそれ自体を表します。正規表現パターン内の文字と数字は、同じ文字列と一致します。

ほとんどの文字や数字の前にバックスラッシュが付くと意味が異なります。

句読点は、エスケープされた場合にのみ一致し、エスケープされない場合は特別な意味を表します。

バックスラッシュ自体はバックスラッシュでエスケープする必要があります。

正規表現には通常バックスラッシュが含まれるため、バックスラッシュを表すには生の文字列を使用することをお勧めします。パターン要素 (\\t に相当する r'\t' など) は、対応する特殊文字と一致します。

次の表に、正規表現パターン構文の特別な要素を示します。パターンを使用し、オプションのフラグ引数を指定すると、一部のパターン要素の意味が変わります。

正規表現の例

Python の正規表現とその一般的な一致関数の概要 文字の一致

例python

説明

「python」と一致します。

    字符类

Python の正規表現とその一般的な一致関数の概要

/实际应用/

    以猫眼电影为例。我们需要获取(电影的名字作者,上映时间)等等都可以用正则表达式来解析。

Python の正規表現とその一般的な一致関数の概要

    分析一下,利用正则表达式提取。Python の正規表現とその一般的な一致関数の概要

    可以看到我们要的名字在一个a里面,而他们被一个div包裹着。

    我们把div想象成一个盒子,可以看到div里面还有一个div 我们可以先找他上面一层的div是一个表单0d5affef54b5792b53e66baae815472b再找到它的上一层的盒子div7944fc67b6e5ce9f806e856ae5e703bc一般来说我们找到前两层就可以找到我们要的结果。如果不对就再找几层。

    分析完再实际操作一下:

pattern = re.compile(&#39;<div>.*?title="(.*?)".*?class="star">(.*?)</p>.*?releasetime">(.*?)</p>&#39;,re.S)

    (.*?)表示我们要的内容4dd738c46dabb06475883a3c3eaef79a(.*?)94b3e26ee717c64999d7867364b1b4a3里面的主演也是我们要的这样我们就可以得到我们想要得多个数据。


/小结/

1. 正規表現は、複数のデータを取得する必要があるシナリオに適しています。必要なデータをより迅速に取得できます。

## 2. この記事では主に正規表現とその基本的な使い方を紹介しますが、各文字の具体的な使い方については、前文の正規表現シリーズの記事を参照してください。正規表現の使用法を十分に理解していること。

以上がPython の正規表現とその一般的な一致関数の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はGo语言进阶学习で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。