ホームページ  >  記事  >  バックエンド開発  >  Python 正規表現と re ライブラリの概要 (コード例)

Python 正規表現と re ライブラリの概要 (コード例)

不言
不言転載
2019-02-11 10:33:552001ブラウズ

この記事では、Python の正規表現と re ライブラリについての紹介 (コード例) を紹介します。一定の参考になる内容です。困っている友人は参考にしてください。お役に立てれば幸いです。

正規表現は、検索パターンを定義する一連の文字です。通常、このパターンは、文字列に対する「検索」または「検索と置換」操作、または入力検証のための文字列検索アルゴリズムによって使用されます。

1. 正規表現の構文

  • . 任意の 1 文字を表します

  • [] 文字セット単一文字の値の範囲を指定します

  • [^] 非文字セット、単一文字の除外範囲を指定します

  • *前の文字は 0 回または無限に展開されます

  • 前の文​​字は 1 回または無限に展開されます

  • ? 前の文字は 0 回展開されますまたは 1 回の展開

  • |左右の式のいずれか 1 つで

  • #{m}前の文字を m 回展開します

  • {m,n}前の文字を m 回 n 回展開します

  • ##^文字列の先頭と一致します
  • ##$文字列
  • () グループ化マークの末尾と一致します。内部的に使用できるのは | 演算子のみです。
  • d 数値、同等[0-9]
  • w ワード文字まで。[A-Z,a-z,0-9]
2 に相当します。 Python での re ライブラリの使い方

Re ライブラリは Python の標準ライブラリで、主に文字列マッチングに使用されます呼び出し方法: import re

2.1. 正規表現文字列の種類

re ライブラリ 生の文字列タイプは正規表現を表すために使用され、

r'text'
生の文字列はエスケープ文字を含まない文字列です。 , それは文字列です 文字はエスケープされますが、生の文字列はエスケープされません、エスケープ記号が正規表現に現れるため、面倒なことを避けるために生の文字列を使用します#2.2. ライブラリのメイン関数 function

    #re.search
  • () 文字列内の正規表現の最初の位置を検索し、一致オブジェクトを返します

  • re .match()
  • 文字列の先頭から正規表現を照合し、一致オブジェクトを返します

  • re.findall()
  • 文字列を検索します、リスト型の一致するすべての部分文字列を返します

  • re.split()
  • 正規表現の一致結果に従って文字列を分割し、リスト型を返します

  • re.finditer()
  • 文字列を検索し、一致する結果の反復タイプを返します。各反復要素は一致オブジェクトです

  • re.sub()
  • 文字列内の正規表現に一致するすべての部分文字列を置換し、置換された文字列を返します

    2.2.1 . re.search(pattern, string, flags=0)
文字列内の正規表現の最初の位置を検索し、一致オブジェクトを返します

##pattern : 正規表現の文字列またはネイティブ文字列表現

  • string : 照合対象の文字列

  • flags : 正規表現を使用する場合 制御タグ

  • re.I re.IGNORECASE 正規表現の大文字と小文字を無視します。[A-Z] は小文字と一致します。

  • re .M re.MULTILINE 正規表現の ^ 演算子は次のことができます。指定された文字列の各行を一致として開始します

  • re.S re.DOTALL 正規表現文字の . 演算はすべての文字に一致し、デフォルトでは改行を除くすべての文字に一致します

  • 例:

    import re
    match = re.search(r'[1-9]\d{5}', 'BIT 100081')
    if match:
        print(match.group(0))
    
    结果为100081
  • 2.2.2. re.match(pattern, string, flags= 0)

正規表現の先頭から一致します。文字列を返し、一致オブジェクトを返します

パラメータは検索関数と同じです

例:

import re
match = re.match(r'[1-9]\d{5}', 'BIT 100081')
print(match.group(0))

结果会报错,match为空,因为match函数是
从字符串开始位置开始匹配,因为从开始位置没有匹配到,所以为空

2.2.3.re.findall(pattern, string, flags=0)

文字列を検索し、一致するすべての部分文字列をリスト型で返します。

パラメータは検索と同じです

例:

import re
ls=re.findall(r'[1-9]\d{5}', 'BIT100081 TSU100084')
print(ls)

结果为['100081', '100084']

2.2 .4. re.split(pattern, string, maxsplit=0 、flags=0)

正規表現の一致結果に従って文字列を分割し、リスト型を返します

maxsplit: 分割の最大数。残りの部分は最後の要素として出力

  • #例:

    import re
    re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084')
    结果['BIT', ' TSU', ' ']
    re.split(r'[1-9]\d{5}', 'BIT100081 TSU100084', maxsplit=1)
    结果['BIT', ' TSU100081']
    2.2.5.re.finditer(pattern, string, maxsplit =0, flags=0)
文字列を検索し、一致する結果の反復タイプを返します。各反復要素は一致オブジェクトです。

パラメータは search と同じです。

Example:

import re
for m in re.finditer(r'[1-9]\d{5}', 'BIT100081 TSU100084'):
    if m:
        print(m.group(0))
结果为
100081
100084

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


文字列内の正規表現に一致するすべての部分文字列を置換し、置換後の文字列を返します

#repl : 文字列に一致する文字列を置換します。

    #count: 一致する文字列の最大置換数
  • Example:
  • import re
    re.sub(r'[1-9]\d{5}', ':zipcode', 'BIT100081 TSU100084')
    结果为
    'BIT:zipcode TSU:zipcode'

    2.3 Re ライブラリの別の同等の使用法 (オブジェクト指向)

    rst=re.search(r'[1-9]\d{5}', 'BIT 100081')
    函数式的调用,一次性操作
    pat=re.compile(r'[1-9]\d{5}')
    rst=pat.search('BIT 100081')
    编译后多次操作
  • regex=re.complie(pattern,flags=0)
regex にも上記の 6 つの使用法があります

2.4 一致Re ライブラリのオブジェクト

Match オブジェクトは一致の結果であり、多くの一致情報が含まれています


以下はオブジェクトの Match 属性です

.string 照合するテキスト

    .re 照合に使用するパターン オブジェクト (正規表現モード)
  • #.pos 正規表現検索テキストの開始位置

  • #.endpos 正規表現検索テキストの終了位置

#Match オブジェクトのメソッドは次のとおりです。

  • .group(0) 一致した文字列を取得します

  • .start() 元の文字列の先頭の文字列と一致します

  • .end() 元の文字列の末尾の文字列と一致します

  • .span() returns (.start(), .end())

2.5 Re ライブラリの貪欲なマッチングと最小限のマッチング

正規表現が長さの異なる複数の項目に一致する場合、どれが返されますか? Re ライブラリはデフォルトで貪欲マッチングを使用します。つまり、一致する最長の部分文字列

と一致する最小の部分文字列

    # を返します。 #*? before 文字は 0 回または無限に展開され、最小一致は
  • #? 前の文字は 1 回または無限に展開され、最小一致は
  • ##?? 前の文字は 0 回または 1 回展開されます。最小一致は

  • {m,n} です? 前の文字は m 回から n 回展開されます(両端を含む)、最小一致は

  • 出力の長さが異なる可能性がある限り、演算子の後に ? を追加して最小一致になります

以上がPython 正規表現と re ライブラリの概要 (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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