ホームページ  >  記事  >  バックエンド開発  >  Python正規表現を使用した重複マッチングを実装する方法

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

WBOY
WBOY転載
2022-07-25 17:20:443170ブラウズ

この記事は、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 | ji または 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 までご連絡ください。