Python正規表現を使用した重複マッチングを実装する方法

WBOY
リリース: 2022-07-25 17:20:44
転載
3079 人が閲覧しました

この記事は、Pythonに関する関連知識を提供します。主に、Python の正規表現が重複マッチングを実装する方法を紹介します。参考になります。一緒に見てみましょう。皆さんのお役に立てれば幸いです。役に立ちます。

Python正規表現を使用した重複マッチングを実装する方法

#[関連する推奨事項:

Python3 ビデオ チュートリアル]

重複マッチングを実装するための正規表現

import regex string = '100101010001' str_re = '101' print(regex.findall(str_re, string, overlapped=True))
ログイン後にコピー

通常の re ライブラリ マッチングでは、1 つの「101」のみと一致します。

正規表現と正規マッチング

正規表現

正規表現は、限られた数のアトムであるデータをフィルタリングするための式として理解できます。そしてメタキャラクター。

#アトム:

基本単位、各式には少なくとも 1 つのアトムが含まれます

通常の文字がアトムを構成します ##非印刷文字は原子を構成します (出力ステーションで印刷されない文字) \t:タブバックスペース文字 \w: 一致任意の文字、数字、アンダースコア \W: \w 原子のグループは [] で宣言されるテーブルを形成します。テーブル内の原子の優先順位は等しいですが、内容は順序どおりにのみ表示されます アトム テーブルが ^ で始まる場合は反転を意味します 正規表現で特別な意味を持つ文字

\n :改行

原子を構成する一般的な文字

\d の反対: 任意の 10 進数と一致

\D: \d

の反対\s : スペース、改行、インデントなどの任意の空白文字と一致します。

\S: \s

アトムで構成されるアトミック テーブルの反対です

#普通字符组成原子 pat1 = "abcd" #非打印字符组成原子 pat2 = "\n" #通用字符做原子 pat3 = "\w" #原子表组成原子 pat4 = "py[abc]" #可以匹配pya,pyb,pyc,但匹配pyab等原子表重复出现的情况失败 #原子表开头带 ^ 表示取反 pat5 = "py[^abc]" #第三个位置匹配除了a,b,c外的任意一个字符
ログイン後にコピー

メタキャラクター:

.

改行文字を除く任意の文字と一致します # 前の原子の 0、1、n 倍に一致します [Greedy モード: できるだけ多く一致] ? 0、前の原子の 1 倍と一致 [遅延モード: 完全一致] 1、前の原子の n 倍と一致 { j } 前の原子は j 回出現します { j , } 前の原子は j 回出現します最小 j 回 { j , k } 前のアトムは少なくとも j 回、最大で k 回出現します i | j i または j と一致します。i と j が同時に出現する場合は、i ( ) グループと一致し、制限されます。このデータ グループの組み合わせは () で説明されているとおりになり、括弧内の説明のみが返されます。 content パターン修飾子 は関数内のフラグ位置にあるパラメータで、正規表現を変更せずに変更できます。 マッチング結果を調整するという意味です。
^ 文字列の先頭と一致します
$ 文字列の終了位置と一致します。一致する一致セットが複数ある場合は、文字列内の最後の一致セットが返されます。

re.I

re.M

Multi と一致する場合、大文字と小文字を無視します。 -行の一致 re.L ローカライズされた識別一致 re.U によるとユニコン文字の一致、\w \W 正規マッチング 正規一致によく使用される関数: (正規表現モジュール re を呼び出します)
##re.S の一致に影響 (改行文字を含む)
正規表現は文字列に対してあいまいマッチングを実行します。その応用例の 1 つは正規マッチングです。定期マッチングとは、Python クローラーがクロールしたテキスト情報から目的の情報を抽出するために使用される技術です。

re.search(pat, str[, flag] ): 文字列 str をスキャンし、pat (最初に一致したもの) の位置を返します。フラグは、正規表現の一致方法を制御するために使用されます。

import re str = 'python' pat = 'pytho[a-n]' print(re.search(pat, str))
ログイン後にコピー

re . match(pat, str[, flag]): 文字列 str の開始位置をスキャンし、pat (最初に成功した一致) の位置を返します。フラグは正規表現の一致方法を制御するために使用されます [if開始され、一致しない場合は終了し、何も返しません]

import re str_1 = 'hello world' str_2 = 'world hello' pat = 'world' print(re.match(pat, str_1)) print(re.match(pat, str_2))
ログイン後にコピー
  • re.complie(pat[, flag]): 正規表現をコンパイルしますpat して正規表現オブジェクトを返します
    findall(str[, pos[, endpos]])
  • : すべてに一致し、リストを使用して文字列内の一致したすべての部分文字列を返します [最初のものだけではありません] time]、pos、および endpos は、文字列の開始位置
  • re.complie(pat).findall(str)
で指定できます。グローバル マッチング関数。pat に一致する str 内のすべての部分文字列と一致します。 、リストをロードし、結果を返します
  • import re str = "hello world hello world hello world" pat = "hello" print(re.complie(pat).findall(str)) print(re.complie(pat).findall(str, 5, 15))
    ログイン後にコピー
  • re.sub(pat, repl, str[, count[, flag]])
  • : 一致する項目を置き換えます文字列 [clean data]、count を使用して置換の最大数を指定できます
    import re str = "400-823-823" pat = "-" #短横改空格,最大替换次数2 str_new = re.sub(pat, " ", str, count=2)
    ログイン後にコピー
    [関連する推奨事項:
  • Python3 ビデオ チュートリアル]
  • 以上がPython正規表現を使用した重複マッチングを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:jb51.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!