python3正芏衚珟

正芏衚珟は、それが簡単に文字列がパタヌンに䞀臎するかどうかを確認するためにあなたを助けるこずができる、特別な文字シヌケンスです。

Pythonはバヌゞョン1.5、Perlスタむルを提䟛する正芏衚珟パタヌンので、モゞュヌルの増加を再。

モゞュヌル再Python蚀語は、正芏衚珟のすべおの機胜を持っおいるこずができたす。

パタヌン文字列ずオプションのパラメヌタフラグから正芏衚珟オブゞェクトを生成する関数をコンパむルしたす。 このオブゞェクトは、正芏衚珟のマッチングず眮換のためのメ゜ッドのセットを持っおいたす。

モゞュヌル再たた、圌らの最初の匕数ずしおパタヌン文字列を䜿甚しお、これらの機胜の機胜ず矛盟する方法を提䟛したす。

このセクションでは、䞀般的なPythonの正芏衚珟凊理機胜を玹介したす。


re.match機胜

開始䜍眮のマッチングが成功しない堎合、文字列の開始䜍眮からパタヌンを䞀臎させようずre.match、マッチNoneを返したす。

関数のシンタックス

re.match(pattern, string, flags=0)

関数のパラメヌタ

パラメヌタ 説明
パタヌン マッチする正芏衚珟
文字列 䞀臎する文字列。
フラグ 倧文字ず小文字を区別し、マルチラむンは、ずいうように䞀臎するかどうか、およびフラグは、正芏衚珟のマッチングは、以䞋のような、制埡するために䜿甚されたす。

成功したマッチre.match方法は、マッチオブゞェクト、そうでない堎合はなしを返したす。

私たちは、䞀臎するオブゞェクトが匏に䞀臎取埗するグルヌプ数倀たたはグルヌプ関数を䜿甚するこずができたす。

オブゞェクトのメ゜ッドをマッチング 説明
グルヌプNUM = 0 匏党䜓の文字列マッチング、グルヌプはタプルのそれらのグルヌプに察応する倀を返したす。その堎合には、耇数のグルヌプ番号を入力するこずができたす。
グルヌプ これは、グルヌプに含たれる番号に1から、文字列のすべおのグルヌプのタプルを返したす。

実斜䟋1

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import re
print(re.match('www', 'www.w3write.com').span())  # 圚起始䜍眮匹配
print(re.match('com', 'www.w3write.com'))         # 䞍圚起始䜍眮匹配

䞊の䟋の出力は実行したす。

(0, 3)
None

䟋2

#!/usr/bin/python3
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:
   print ("matchObj.group() : ", matchObj.group())
   print ("matchObj.group(1) : ", matchObj.group(1))
   print ("matchObj.group(2) : ", matchObj.group(2))
else:
   print ("No match!!")

次のように䞊蚘実斜䟋の結果は次のずおりです。

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

re.searchメ゜ッド

re.search文字列党䜓をスキャンし、最初に成功したマッチを返したす。

関数のシンタックス

re.search(pattern, string, flags=0)

関数のパラメヌタ

パラメヌタ 説明
パタヌン マッチする正芏衚珟
文字列 䞀臎する文字列。
フラグ 倧文字ず小文字を区別し、マルチラむンは、ずいうように䞀臎するかどうか、およびフラグは、正芏衚珟のマッチングは、以䞋のような、制埡するために䜿甚されたす。

成功したマッチre.searchメ゜ッドは、マッチオブゞェクト、そうでない堎合はなしを返したす。

私たちは、䞀臎するオブゞェクトが匏に䞀臎取埗するグルヌプ数倀たたはグルヌプ関数を䜿甚するこずができたす。

オブゞェクトのメ゜ッドをマッチング 説明
グルヌプNUM = 0 匏党䜓の文字列マッチング、グルヌプはタプルのそれらのグルヌプに察応する倀を返したす。その堎合には、耇数のグルヌプ番号を入力するこずができたす。
グルヌプ これは、グルヌプに含たれる番号に1から、文字列のすべおのグルヌプのタプルを返したす。

実斜䟋1

#!/usr/bin/python3

import re

print(re.search('www', 'www.w3write.com').span())  # 圚起始䜍眮匹配
print(re.search('com', 'www.w3write.com').span())         # 䞍圚起始䜍眮匹配

䞊の䟋の出力は実行したす。

(0, 3)
(11, 14)

䟋2

#!/usr/bin/python3

import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print ("searchObj.group() : ", searchObj.group())
   print ("searchObj.group(1) : ", searchObj.group(1))
   print ("searchObj.group(2) : ", searchObj.group(2))
else:
   print ("Nothing found!!")
次のように䞊蚘実斜䟋の結果は次のずおりです。
searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

差分re.matchずre.search

re.matchは、文字列の先頭には、正芏衚珟を満たしおいない堎合はマッチが倱敗し、関数はNoneを返し、文字列の始たりに過ぎないず䞀臎し、か぀、それが䞀臎するものが芋぀かるたで、文字列党䜓にマッチre.search。

䟋

#!/usr/bin/python3

import re

line = "Cats are smarter than dogs";

matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print ("match --> matchObj.group() : ", matchObj.group())
else:
   print ("No match!!")

matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:
   print ("search --> matchObj.group() : ", matchObj.group())
else:
   print ("No match!!")
次のように䞊蚘の結果の䟋を次に瀺したす。
No match!!
search --> matchObj.group() :  dogs

怜玢眮換

Pythonのreモゞュヌルは、眮換文字列の䞀臎のためにre.subを提䟛したす。

構文

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

返される文字列は、䞀番巊のREマッチした文字列を眮換するために繰り返されるこずはありたせんです。 パタヌンが芋぀からない堎合、文字がそのたた返されたす。

オプションのパラメヌタ数は、眮換パタヌンマッチング回数の最倧倀であり、カりントは非負の敎数でなければなりたせん。 デフォルト倀は、すべおの発生を眮き換えるために、0の手段です。

䟋

#!/usr/bin/python3
import re

phone = "2004-959-559 # 这是䞀䞪电话号码"

# 删陀泚释
num = re.sub(r'#.*$', "", phone)
print ("电话号码 : ", num)

# 移陀非数字的内容
num = re.sub(r'\D', "", phone)
print ("电话号码 : ", num)
次のように䞊蚘実斜䟋の結果は次のずおりです。
电话号码 :  2004-959-559 
电话号码 :  2004959559

正芏衚珟修食子 - オプションのフラグ

正芏衚珟は䞀臎モヌドを制埡するための任意のフラグの修食子を含めるこずができたす。 修食子は、オプションのフラグずしお指定されおいたす。 |ビット単䜍のORを介しおするこずができ、耇数のフラグを指定したす。 re.Iずしお| re.Mは私ずMフラグに蚭定されおいたす

修食子 説明
re.I だからマッチングでは、倧文字ず小文字は区別されおいたせん
re.L ロヌカリれヌション識別を行うロケヌル察応マッチング
re.M ^ず$に圱響を䞎えるマルチラむンのマッチング、
re.S 改行を含むSoがは、すべおの文字にマッチ
re.U Unicode文字セットの文字を解決するためによりたす。 このフラグは、\ W、\ bの、\ B. \ wに圱響を䞎えたす
re.X あなたが理解しやすい正芏衚珟を蚘述するように、あなたがより柔軟なフォヌマットを䞎えるこずによっお、このフラグ。

正芏衚珟パタヌン

正芏衚珟を瀺すために特別な構文を䜿甚しお、パタヌン文字列

文字や数字そのもの。 文字ず数字の正芏衚珟パタヌンは、同じ文字列に䞀臎したす。

前にバックスラッシュを付けたずきに文字ず数字のほずんどは、異なる意味を持぀こずになりたす。

詊合自䜓は、たたは圌らは特別な意味を衚すずきに句読点のみが゚スケヌプされたす。

バックスラッシュ自身は、バックスラッシュ・゚スケヌプを䜿甚する必芁がありたす。

正芏衚珟は、通垞、バックスラッシュを含んでいるので、あなたがそれらをよりよく衚珟するために、元の文字列を䜿甚するず思いたす。  '//トン'ず同じようなR '/ T'など、スキヌマ芁玠は、察応する特殊文字に䞀臎したす。

次の衚は、正芏衚珟パタヌンの構文の特定の芁玠を瀺しおいたす。 もしあなたの䜿甚パタヌンオプションのflags匕数を提䟛しながら、パタヌンの特定の芁玠の意味が倉曎されたす。

モヌド 説明
^ 文字列の先頭にマッチしたす
$ 文字列の末尟にマッチしたす。
。 改行以倖の任意の文字ず䞀臎re.DOTALLフラグが指定されおいる堎合、あなたは改行を含む任意の文字を䞀臎させるこずができたす。
[ja.] 【AMK]マッチ ''、 'M'たたは 'K'それは別々に蚘茉されおいる文字のグルヌプを衚すのに䜿甚したした
[^ ja.] いない[]の文字は[^ abc]はA、B、Cの文字に加えお、䞀臎したした。
*再 衚珟マッチングの0以䞊。
+再 マッチング衚珟の䞀぀たたはそれ以䞊。
再 セグメントを定矩するために、䞊蚘の正芏衚珟による䞀臎0たたは1、非欲匵りな方法
{n}が再
{、n}が再 nは盎前の匏の完党䞀臎。
再{N、M} セグメントを定矩するために、䞊蚘の正芏衚珟によりm倍にマッチnは、貪欲な方法
| B 䞀臎たたはb
再 括匧内のGマッチ発珟は、たた、基を衚したす
IMX 正芏衚珟は、3぀のオプションのフラグで構成されおいたす。私、メヌトル、たたはX。 これは、括匧内の領域のみに圱響したす。
-imx 正芏衚珟I、M、たたはXオプションのフラグ閉じたす。 これは、括匧内の領域のみに圱響したす。
再 ja.䌌おいたすが、グルヌプを衚すものではありたせん。
IMX :?再 私は、括匧、メヌトル、たたはXにオプションのフラグを䜿甚したす
-imx :?再 私は、括匧内のメヌトルを䜿甚するか、オプションのフラグをxはしないでください
ja. 泚意しおください。
=再 必ず区切り文字を転送したす。 ja.によっおここに衚さ含たれおいる正芏衚珟、堎合、正垞に珟圚の堎所にマッチし、それ以倖の堎合は倱敗したす。 含たれおいる匏が詊みられおきたしかし、䞀床、マッチング゚ンゞンは進みたせん。パタヌンの残りの郚分は、偶数デリミタ右しおみおくださいされおいたす。
Reが 前方吊定デリミタ。 そしお、確かに反し区切り;成功含たれる匏は文字列内の珟圚䜍眮ず䞀臎しおいたせん
>再 独立したパタヌンマッチング、バックトラックを排陀したす。
\ W マッチ英数字
\ W 英数字以倖にマッチ
\ S マッチ[\トン\ nは\ rを\ f]のず同等の任意の空癜文字を、。
\ S 任意の非空癜文字に䞀臎したす
\ D [0-9]ず等䟡である任意の数ず䞀臎したす。
\ D 任意の非数倀ず䞀臎したす
\ A 文字列の先頭にマッチしたす
\ Z 䞀臎文字列の最埌には、改行にマッチする文字列の䞡端だけ前に、改行が存圚する堎合。 C蚀語
\ Z 䞀臎文字列の末尟
\ G 䞀臎䞀臎は、最埌の䜍眮を完了したした。
\ B ぀たり、それは蚀葉の間の䜍眮ずスペヌスを指し、単語の境界に䞀臎したす。 䟋えば、「小胞䜓\ b 'は' er」ずの "決しお"ず䞀臎しないこずができたすが、「ER」で「動詞」を䞀臎させるこずはできたせん。
\ B 非ワヌド境界ず䞀臎したす。 「Erを\ B」は、「er」ずの「動詞」を䞀臎させるこずができたすが、「決しお」「えヌ」内に䞀臎するこずはできたせん。
\ N、\ tの、などが挙げられたす。 改行にマッチしたす。 タブ文字に䞀臎したす。 埅っお
\ 1 ja. \ 9 パケットのn番目のサブ匏に䞀臎したす。
\ 10 それは詊合埌にある堎合は、最初のn個のパケットの郚分匏に䞀臎したす。 そうでなければ、匏8進文字コヌドを意味したす。

正芏衚珟の䟋

文字の䞀臎

䟋 説明
パむ゜ン 「パむ゜ン」をマッチング。

文字クラス

䟋 説明
【Ppを] ython 「パむ゜ン」たたは「パむ゜ン」をマッチング
こする[がた] マッチ「ルビヌ」たたは「ルヌブ」
[AEIOU] マッチング括匧内の文字のうちの任意の1文字
[0-9] 任意の数字にマッチしたす。 同様に[0123456789]
[AZ] 任意の小文字に䞀臎したす
[AZ] 任意の倧文字に䞀臎したす
[A-ZA-Z0-9] 任意の文字ず数字を照合し
[^ AEIOU] 文字以倖のすべおの文字に加えおAEIOU
[^ 0-9] 数字以倖の文字をマッチング

特殊文字クラス

䟋 説明
。 "\ n"以倖の任意の1文字に䞀臎しおいたす。 、 '\ n'を含めおの䜿甚ず同様に、任意の文字を含めお䞀臎させるには '[。\ N]'モヌド。
\ D 桁の文字ず䞀臎したす。 [0-9]に盞圓したす。
\ D 数字以倖の文字に䞀臎したす。 これは[^ 0-9]ず等䟡です。
\ S ようにスペヌス、タブ、改ペヌゞ、およびを含む任意の空癜文字にマッチしたす。 [\ F \ nは\ rを\トン\ V]に盞圓したす。
\ S 任意の非空癜文字に䞀臎したす。 等䟡である[^ \ F \ nは\ rを\トン\ V]。
\ W アンダヌスコアを含む任意の単語文字ず䞀臎しおいたす。 それは[A-ZA-Z0-9_] 'ず等䟡です。
\ W 任意の非単語文字ず䞀臎したす。 これは、 '[^ A-ZA-Z0-9_]'ず等䟡です。