m = re。 match(r'hello' , 'hello world!')
print m.group()
re モジュールは、次のような文字列内の正規表現メタ文字用のメソッド escape(string) も提供します。 * /+/? の前にエスケープ文字を追加してから戻ります。これは、多数のメタ文字を一致させる必要がある場合に便利です。
2.2. Match
Match オブジェクトは一致の結果であり、Match が提供する読み取り可能なプロパティまたはメソッドを使用してこの情報を取得できます。
属性:
文字列: マッチング時に使用されるテキスト。
re: マッチングに使用されるパターン オブジェクト。
pos: 正規表現検索が開始されるテキスト内のインデックス。この値は、Pattern.match() メソッドおよび Pattern.seach() メソッドの同名のパラメータと同じです。
endpos: 正規表現検索が終了するテキスト内のインデックス。この値は、Pattern.match() メソッドおよび Pattern.seach() メソッドの同名のパラメータと同じです。
lastindex: テキスト内で最後にキャプチャされたグループのインデックス。パケットがキャプチャされなかった場合は None になります。
lastgroup: 最後にキャプチャされたグループのエイリアス。このグループにエイリアスがない場合、またはキャプチャされたグループがない場合は、None になります。
メソッド:
group([group1, …]):
1 つ以上のグループによってインターセプトされた文字列を取得します。複数のパラメーターが指定された場合は、タプルの形式で返されます。 group1 は数値またはエイリアスを使用できます。数値 0 は一致した部分文字列全体を表します。パラメータが入力されていない場合は、group(0) が返されます。回は、最後にインターセプトされた部分文字列を返します。
groups([default]):
すべてのグループのインターセプト文字列をタプルの形式で返します。 group(1,2,…last) を呼び出すことと同等です。デフォルトは、文字列をインターセプトしないグループがこの値に置き換えられることを意味し、デフォルトは None です。
groupdict([default]):
エイリアスのグループのエイリアスをキーとして、グループによってインターセプトされた部分文字列を値として持つ辞書を返します。エイリアスのないグループは含まれません。デフォルトの意味は上記と同じです。
start([group]):
指定されたグループによってインターセプトされた部分文字列の文字列内の開始インデックス (部分文字列の最初の文字のインデックス) を返します。グループのデフォルト値は 0 です。
end([group]):
文字列内の指定されたグループによってインターセプトされた部分文字列の終了インデックス (部分文字列の最後の文字のインデックス + 1) を返します。グループのデフォルト値は 0 です。
span([グループ]):
戻り値 (開始(グループ)、終了(グループ))。
expand(template):
一致したグループをテンプレートに入れて戻ります。 id または g
、g を使用してテンプレート内のグループを参照できますが、数値 0 は使用できません。 id は g; と同等ですが、10 は 10 番目のグループとみなされます。1 の後に文字「0」が続くことを表現したい場合は、g<1>0 のみを使用できます。
コードをコピー コードは次のとおりです:
import re
m = re.match(r'(w+) (w+)(?P
.*)', 'hello world!')
print "m.string :", m.string
print "m.re:", m.re
print "m.pos:", m.pos
print "m.endpos:", m.endpos
print "m.lastindex:", m.lastindex
print "m.lastgroup:", m.lastgroup
print "m.group(1,2):", m.group(1, 2)
print "m.groups():", m.groups()
print "m.groupdict():", m.groupdict()
print "m.start(2):", m.start(2)
print "m.end(2):", m.end(2)
print "m.span(2):", m.span(2)
print r"m.expand(r'2 13'):", m.expand(r'2 13')
### 出力 ###
# m.string: hello world!
# m.re:
# m.pos: 0
# m.endpos: 12
# m.lastindex: 3
# m.lastgroup: 符号
# m.group(1,2): ( 'hello', 'world')
# m.groups(): ('hello', 'world', '!')
# m.groupdict(): {'sign': '!'}
# m.start(2): 6
# m.end(2): 11
# m.span(2): (6, 11)
# m.expand(r' 2 13'): ワールドハロー!
2.3.パターン
パターン オブジェクトは、パターンが提供する一連の方法によってテキストの適合を実行できる、適切な表現形式です。 >パターンは、表現式を取得するために使用される、次の関連情報を提供します。
パターン: 評価時に使用される表現形式の文字列。
フラグ: 評価時に使用される適合モード。
groupindex: 表式内に名前が含まれるグループの名前はセキュリティであり、そのグループに対応する番号は値の文字典であり、そのグループには名前は含まれません。
复制代码
代码如下: import re p = re.compile(r'(w+) (w+)(? P
.*)', re.DOTALL) print "p.pattern:", p.pattern
print "p.flags:", p.flags
print "p.groups: ", p.groups
print "p.groupindex:", p.groupindex
### Output ###
# p.pattern: (w+) (w+)(?P
. *)
# p.flags: 16
# p.groups: 3
# p.groupindex: {'sign': 3}
实例方法[ | re模块方法]:
1、match(string[, pos[, endpos]]) | re.match(pattern, string[, flags]): このメソッドは、文字列の位置の下にあるパターンを呼び出します。一致パターンが完了した場合、一致可能です。一致オブジェクトが返されます。一致途中のパターンであれば、
pos と endpos の指定値はそれぞれ 0 と len(string) です。re.match() はこの 2 つのパラメータを指定できません。パラメータflags は、 注意: この方法は完全な一致ではありません。パターンの終了時に文字列に残りの文字があれば成功とみなされます。
2.1 の例を参照してください。
2、search(string[, pos[, endpos]]) | re.search(pattern, string[, flags]):
このメソッドは、文字列内で一致する可能性がある子列を検索するために使用されます。パターンの終了時に一致する場合、文字列の pos の下から一致パターンを開始します。
pos と endpos の値は、それぞれ 0 と len(string) です。
pos と endpos の値は、それぞれ 0 と len(string) です。 );re.search() はこの 2 つのパラメータを無法で指定し、パラメータフラグはパターンの一致モードを指定するために使用されます。 >
# エンコーディング: UTF-8
import re # 将正则表达式编译成パターン对象
pattern = re.compile(r'world') # usesearch () 查找適合の子串、存在しない能適合の子串の場合は返しません # この例では match() 無法成功適合 match = pattern.search('hello world!') if match:
# 使用Match获得分组情報
print match.group()
### 出力 ###
# world
3、split(文字列[, maxsplit]) | re.split(pattern, string[, maxsplit]):
一致する子列を文字列分割した後、列表を返します。maxsplit は最大分割次数を指定するために使用され、全体分割は指定されません。 🎜>
复制代码
代码如下:
import re p = re.compile(r'd+')
print p.split(' one1two2three3four4')
### 出力 ###
# ['one', 'two', 'three', 'four', '']
4、findall(文字列[, pos[, endpos]]) | re.findall(pattern, string[, flags]): 検索文字列、リスト形式ですべての能力に適合する子列が返されます。代コード如下: import re
p = re.compile(r'd+')
print p.findall('one1two2three3four4')
### 出力 ###
# ['1', '2', '3', '4']
5. finditer(string[, pos[, endpos]]) | re.finditer(pattern, string[, flags]):
文字列を検索し、一致する各結果への順次アクセスを返します (Match オブジェクト)イテレータ。
コードをコピー コードは次のとおりです。
import re
p = re.compile(r'd+' )
for m in p.finditer('one1two2three3four4'):
print m.group(),
### 出力 ###
# 1 2 3 4
6. sub(repl, string[, count]) | re.sub(pattern, repl, string[, count]):
repl を使用して、string 内の一致する各部分文字列を置換し、置換された文字列を返します。
repl が文字列の場合、id または g
、g を使用してグループを参照できますが、数値 0 は使用できません。
repl がメソッドの場合、このメソッドは 1 つのパラメータ (Match オブジェクト) のみを受け取り、置換用の文字列を返す必要があります (返された文字列でグループを参照することはできません)。
count は置換の最大数を指定するために使用されます。指定しない場合は、すべての置換が行われます。
コードをコピー コードは次のとおりです。
import re
p = re.compile(r'(w+ ) (w+ )')
s = 'こんにちは、世界!'
print p.sub(r'2 1', s)
def func(m):
return m. group(1 ).title() + ' ' + m.group(2).title()
print p.sub(func, s)
### 出力 ###
# Say i 、ワールドハロー!
# こんにちは、ワールド!
7. subn(repl, string[, count]) |re.sub(pattern, repl, string[, count]) :
Return (sub(repl, string[, count]), 置換数)。
コードをコピー コードは次のとおりです。
import re
p = re.compile(r'(w+ ) (w+ )')
s = 'こんにちは、世界!'
print p.subn(r'2 1', s)
def func(m):
return m. group(1 ).title() + ' ' + m.group(2).title()
print p.subn(func, s)
### 出力 ###
# (' Say i, world hello!', 2)
# ('I Say, Hello World!', 2)
上記は Python の正規表現のサポートです。正規表現に習熟することは、すべてのプログラマーが備えなければならないスキルです。現在、文字列を扱わないプログラムはありません。筆者もまだまだ初期段階ですが、頑張ってください^_^
なお、図には特殊な構造の例が無く、これらの正規表現の使い方が難しいです。興味があれば、abc で始まらない単語を一致させる方法を考えてみてください ^_^
全文終わり