re正規表現——python

2389 ワード

形式化モードを使用してテキストを検索および変更します.pythonの正規表現は、reモジュールを介してper言語構文に基づいて構文を使用します.
テキスト内のパターンの検索
re最も一般的な使い方は、テキストのパターンを検索することです.search()関数は、モードとスキャンするテキストを入力として取り、このモードが見つかったらmatchオブジェクトを返します.パターンが見つからない場合、search()はNoneを返します.各matchオブジェクトには、元の入力文字列、使用される正規表現、および元の文字列にパターンが現れる位置など、一致する性質に関する情報が含まれます.start()は文字列内の対応するインデックスを与えることができ、end()メソッドは文字列内の対応するインデックスを与え、パターンに一致するテキストが文字列内に現れる位置を示す.
#!/usr/bin/env python

import re

pattern = 'this'
text = 'Does this text matcht the pattern?'
match = re.search(pattern,text)
s = match.start()
e = match.end()

print 'start in %s' % s
print 'end in %s' % e
print 'Found "%s"
in "%s"
from %d to %d ("%s")' % (match.re.pattern,match.string,s,e,text[s:e]) print text print text[s:e]

reには、テキスト文字列としての正規表現を処理するための高度なモジュールが含まれていますが、プログラムで頻繁に使用される式の場合、これらの式をコンパイルするとより効率的になります.compile()は正規表現をRegexObjectオブジェクトにコンパイルします.search()は、文字列の単一のインスタンスを検索し、findall()関数は、入力内のモードに一致して重複しないすべてのサブ列を返します.5つの方法で繰り返しを表すことができます.表示方法は以下の通りです.× 0回または複数回を表す(1つのモードを0回繰り返すことができ、マッチングが存在しない場合
  • は少なくとも1回一致することを表す?0回または1回{n}は指定された回数{mが現れることを表し、n}は少なくともm回が現れることを表し、最大m回[ab]はaまたはbを表す[^]対応する文字の検索を禁止するpythonでは、次のようにトランスコーディングも使用できます.主なトランスコーディングは、d 1つの数字D 1つの非数字s 1つの空白文字S 1つの非空白文字w 1つのアルファベット数字W 1つの非アルファベット数字^文字列または行の開始$文字料理または行の終了A文字列の開始Z文字列の終了b 1つの単語の先頭または末尾の空白列B単語の先頭または末尾の空白列を使用しない検索は、re.matchおよびre.search()を使用できます.re.match()は、検索対象が文字列の一番前にある場合にのみ有効に認識され、searchはいつでも彼を見つけることができます.
    グループ解析でマッチング
    グループ()を使用すると、組織のマッチングが得られます.グループを使用して文字列の各部分を検索しますが、結果にグループに一致する部分が必要でない場合は、グループ()が役立ちます.サンプルコードは次のとおりです.
    text = 'this is some text -- with punctuation.'
    >>> print 'input text   :', text
    input text  : this is some text -- with punctuation.
    >>> regex = re.compile(r'(\bt\w+)\W+(\w+)')
    >>> match = regex.search(text)
    >>> print 'entire match         :', match.group(0)
    entire match        : this is
    >>> print 'entire match         :', match.group(1)
    entire match        : this
    >>> print 'entire match         :', match.group(2)
    entire match        : is
    >>> print 'entire match         :', match.group(3)
    entire match        :
    

    0番目のグループは式全体に一致する文字列を表し、サブグループはその左かっこで式に現れる順序で1番目に重い番号を付けます.グループは名前付きグループ構文を設定できます:(?Ppattern)