Pythonのreモジュール

re.findall() 文字を検索する

文字列から文字のシーケンスに一致するモードを見つけること:のfindAll(パターン(正規表現)、対象文字列)、種類リストの戻り値は、リストの要素は、各文字列に一致している
、など。

再インポート

A = "ジャワ| python12988"    
B = re.findall( "ジャワ"、A)
C re.findallを=( "\のD"、A)
プリント(B、C)

結果

[ 'のJava'] [ '1、「2」、「9' 、」8' 、」8' ]


のfindAll()関数は、パターンが複数のパターンを使用して、第三のパラメータが一致している使用することができる『|』は、それぞれのモードを分離し、そしてすべてのモードのために活性化することができます re.I再インポート言語= "#JavaPHP PythonC"R&LT = re.findall( 'のC#'、言語)プリント(R&LT)結果[]デフォルトでは大文字と小文字の区別は、 'C#が'元に一致しません文字列「C#の」編集3番目のパラメータがある再。I、その総額が一致しないように効果インポート再言語= "#JavaPHP PythonC"R&LT = re.findall( 'Cの#'、言語、re.I)























プリント(R)



結果

[ 'Cの#']


としてre.S

再インポート

言語= "PythonC#\ nJavaPHP"
R&LT = re.findall( '#{C} 1'、言語、re.I)# ""改行を除くすべての文字にマッチする
(R)印刷



結果は

[]



プラスモードre.Sは、変更することができる。「」改行マッチングされる挙動、

インポート再

PythonC#\ nJavaPHP「言語=の」
R&LT = re.findall( 'C#の{1} '、言語、re.I | re.S) "" #は、 改行以外のすべての文字に一致する
プリント(R)



結果

[ 'C#の\のN-']


re.sub ()定期交換、置換文字

re.sub(文字置換される、置換文字、ターゲット文字列、交換の数)、置換文字列の戻り値
として:

再インポート

言語=「PythonC PHPC#1の##のJAVAC '
R&LT = re.sub(' C位'' GO」、言語)
プリント(R&LT)は、



結果

PythonGOJavaGOPHPGOを



実施形態では、デフォルトの置換の数は0であり、パラメータの数を代わりに添加される
。ように

再インポート

言語=「PythonC PHPC ###のjavac」
R&LT = re.sub(「C位」、「GO」、言語、COUNT = 1)。
プリント(R)が

 

生じる

PythonGOJavaC#PHPC#1

のみのCの置き換えに#の結果
として)(パイソンを交換組み込み作用効果を

2番目のパラメータが関数に渡されてもよい)(re.sub
:など

インポート再

(値)変換DEF:
    プリント(値)

言語= 'PythonC PHPC ###のjavac'
R&LT = re.sub( 'Cの#'、変換、言語)
プリント(R&LT)


結果は、三個の一致オブジェクト、スパンのプリントアウトされますマッチした文字の位置を表し

、<_sre.SRE_Matchオブジェクト;スパン=(6 ,. 8)、一致= 'Cの#'>
<_sre.SRE_Matchオブジェクト(、14である12)=スパン、一致= 'Cの#'>
<_sre .SRE_Matchオブジェクト;スパン=(17 ,. 19)、一致= 'C#'>
PythonJavaPHP


返された文字列「C#が」削除されるので、この関数は、値を返さないので、説明「C#は」、3回、毎回コール変換機能に一致する
値がオブジェクトであるため、実施形態に書き換えられますが、グループ値を呼び出すことができますので、 ( 'C#'と一致する)方法

インポート再

DEF(値)に変換:
    マッチ= value.group()
    リターン'!!' + +一致'!!'

言語= 'PythonC PHPC ###のjavac'
R&LTのRe = .SUB( 'C#の'のために変換し、言語)
を印刷(R)


の結果'C#は'が正常に置き換えた'C !!#!!':

JavaのPHPのC#!!パイソン!! C !!#!!#!! C !!


re.sub()は第2のパラメータ関数を渡されるので、文字列に対して複雑な操作を行うことが可能である。
例:
文字列「ABC24525DEF22698」4以下のすべての数より大きい4未満の、0に置き換えられデジタルは、この機能を実現するために変換関数を編集することができ、9を置き換え

インポート再

:DEF(値)に変換
    一致= value.group()
    int型(マッチ)IF <= 4:
        リターン「0」
    他:
        リターン「9」

=言語'ABC24525DEF22698'
R&LT = re.sub( '\のD'、変換、言語)
プリント(R&LT)



印刷結果:

ABC00909DEF00999


パラメータプログラミング関数は、関数の他のある関数として
re.match()と再。検索()

一致する文字列の開始位置からre.match()、開始位置がnullを返す、正規表現に適合しない場合
、文字列全体を検索re.search()は、第一の照合結果を返し

二つの機能を結果を一致させることができる場合は、返された結果が、オブジェクトの一致である
スパン()メソッドがあるより)(グループに加えて、方法のマッチオブジェクトは、マッチング結果の位置に戻ることができます

し、re.findall()メソッドは、すべて置くことです試合の結果が返されます

1.試合ヘッドがマッチする文字列から始まる()メソッド、

再インポートの

内容=「私の電話番号123456のものである。」
印刷(LEN(コンテンツ))#文字列の長さの
結果= re.match(R「^ \ S \ dは+ \ S \ワット *」、コンテンツ)#は、 2番目の文字列が一致するように、最初のパラメータが正規表現で、マッチを使用して一致した
印刷(結果)
を印刷(result.group())出力整合#を概要
位置インデックスプリント(result.span())#出力整合コンテンツの

結果:

34である
、<_sre.SRE_Matchオブジェクトスパン=(0、13である)、一致= 'であるの123456'>
である123456の
(0、13である。)


2ターゲット一致

インポートのRe

=コンテンツを'私の電話番号123456の一つである。'
印刷(LEN(コンテンツ))#文字列の長さの
結果= re.match(R '^ザ・ \ sの(\ D +)\ SIS'、コンテンツ) 一致する第二の文字列として#は、最初のパラメータが正規表現であり、一致を使用して一致する
プリント(結果)
プリント(result.groupは())出力#と一致します
プリント(result.group(1))#最初の出力である(パッケージの)内容
プリント(result.span())#は、位置インデックスの出力と一致する


結果を:

34である
<_sre.SRE_Matchオブジェクト;スパン=(0、13であります)、一致> =「での123456」
である123456の
123456
(0、13である)


、N(n)は、グループは以下のように表すことができる場合(正規表現では)N(、)(出力を同封グループを使用することができ)、カッコ内のn番目の試合の出力。
3.一般的な試合

再インポートの

内容=「私の電話番号123456の一つです。」
結果= re.match(R&LT「^の。*数。$」、コンテンツ)#を使用して一致一致、最初のパラメータが一致するように2番目の文字列として、正規表現であり、
印刷(結果)
プリント(result.group())#は、出力マッチ
プリント(result.span())#出力整合コンテンツを位置インデックス


結果:

<_sre.SRE_Matchオブジェクト;スパン=(0、34である)、一致= '私の電話番号123456の一方が'>
。IS 123456一つの私の電話番号
(0、34です)


。表わしは任意の文字の前の文字が一致して一致した*は無制限を示し
4.非貪欲貪欲および

再インポートの

内容=「私の電話番号123456がISの一つ」
(「貪欲試合:」)印刷
結果= re.match(R&LTを「^。*(\ dは +)。*」、コンテンツ)#をする2番目の文字列に一致するように、最初のパラメータは、正規表現でマッチを使用して一致した
(result.group())#出力の一致を印刷
印刷( '結果=%S' %のresult.group(1))#は、 第一の出力()パッケージの内容である
-印刷( '' * 20である)
( '非欲張りマッチ:')印刷
結果= re.match( 、コンテンツ')。?。* ^(\ + D)*の' R&LT
印刷(result.group())
を印刷( '%S =結果' result.group%(1。))


結果:

貪欲試合:
ザ・のマイ123456 IS 。1つの電話番号の
結果6 =。
--------------------
非欲張りマッチ:
。私の電話番号123456の一つは、
結果= 123456


5.修飾再。Sの

輸入再

= 'IS 123456の''のコンテンツ
。私の携帯電話の一つ
' ''
'?。?。* ^(\ + D)*電話の'、コンテンツ、re.S)結果= re.match
:結果IF
    印刷( result.group(1))
他:
    印刷( '結果=なし')
結果2 re.match =( '^(\ + Dの*?)*電話。?。'、コンテンツ)
IF結果2:
    印刷(result2.group (1))
他:
    印刷(「結果2 =なし」)


結果:

123456
結果2 =なし


。パラメータプラスre.S以来、ワイルドカードマッチ改行、結果は、空の結果2再空ではありませんので。マッチングを使用するときにケースを無視する:。.S、多くのそのような改質剤は、re.Iある
6一致が逃げる

インポート再

コンテンツ=「(百度)www.baidu.com」
結果= re.match(「(百度) www.baidu.com 'コンテンツ)
結果2 re.match =(' \(Baiduの\)WWW \ .baidu \。コム」、コンテンツ)
の結果の場合:
    印刷(result.group())
他:
    印刷( '結果=なし')
IF結果2:
    印刷(result2.group())
他:
    印刷( '結果2 =なし')


結果:

結果=なし
(百度)www.baidu .COM


)(原因は、正規表現の特殊文字なので、一致する必要があります()、エスケープ文字を追加する必要があります「」である。
試合で7.search()メソッド、()の異なる方法、ヘッドから始める必要はありませんマッチング

再インポートの

'ザ私の他の電話番号一つですで123456'コンテンツ=
結果= re.search( '?。?。*で(\ D +)*ナンバー'、コンテンツ)
を印刷(result.group())


結果:

マイ電話123456番号である。

8.findall()メソッド、マッチ()と検索()マッチの端に一致している最初のコンテンツを返す、のfindAll()は、すべてのコンテンツは試合のルールに沿ったものである返し

再インポート

HTML = '' '
<DIV ID = "曲・リスト">
<H2クラス= "タイトル">歌单</ H2>
<Pクラス= "導入">歌单列表</ P>
<UL ID = "リスト"クラス= "リストグループ">
<LIデータビュー= "2">一路上有你</ LI>
<LIデータビュー= "7">
<a href="/2.mp3"singer="任贤齐">沧海一声笑</a>の
</ LI>
<LIデータビュー= "4"クラス= "アクティブ">
<a href="/3.mp3"singer="齐秦">往事随风</a>の
</ LI>
<LIデータビュー= "6">は、<a href = "/ 4.mp3"歌手= "を超え">光辉岁月</a>の</ LI>
<LIデータビュー= "5"> <a href="/5.mp3"singer="程慧玲">记事本</a>の</李>
<LIデータ-veiw = "5">
<HREF = "/ 6.mp3"シンガー= "邓丽君">但愿人长久する</a>
ます。</ li>
</ ulの>
</ div>
'' '

結果= re.findall(' <LI。*?のhref = "(。*?)" 。?(。?*)*シンガー= "(。*?)"> </a>の」、HTML、re.S)
結果の場合:
    プリント(結果)
    結果で解像度のための:
        プリント(RES [0]、RES [1]、RES [2])



[( '/2.mp3'、 'リッチー'、 '沧海一声笑')、( '/3.mp3'、 ' チン'、 ) '風の過去'、( '/4.mp3'、 ' 'を超えた' Guanghuisuiyue')、( '/5.mp3'、 ' チェンHuiling'、 'ノート')、(「/6.mp3 ''テレサ''農「)]
/2.mp3リッチー沧海一声笑
/3.mp3チン風過去
Guanghuisuiyueのを超え/4.mp3
/5.mp3チェンHuilingのメモ帳
/6.mp3テレサ農


9.sub()メソッドは、一致する文字除去する

第二のパラメータは「それが表す、2で\ D + \、ヌル一致するコンテンツと交換した場合、ライトサブ( 『\のD +』、 『 - 』 )、置き換えマッチングの内容を置きます- 。

再インポート

コンテンツ= '54abc59de335f7778888g'
コンテンツ= re.sub( '\ + D'、 ''、コンテンツ)
を印刷(コンテンツ)

結果:

ABCDEFG

    。1

10.compile()

再インポートの

content1 = '2016年1月1日12時01分'



= re.compileパターン( '\ {2} D:\ {2} D')は
re.sub =(パターン、 ''、content1)結果1
re.sub =結果2(パターンを、 ''、content2)
result3 =再。サブ(パターン、「」、content3)
プリント(結果1、結果2、result3)


結果:

2016年1月1日2017年1月1日2018年1月1日

、同じ正規表現のケースに合わせて必要で、以前に定義されたコンパイルを簡略化することができます符号量だけでなく、コンパイルのRS改質剤を使用するなどしてもよいです。

おすすめ

転載: www.cnblogs.com/lisa2016/p/11246191.html