Pythonのクラス28を終えた----モジュール再

まず、通常の(再)

その性質上、正規表現は(または再)Pythonで埋め込まれた小さな、高度に専門的なプログラミング言語であり、およびモジュールを再することにより達成されます。

正規表現パターンは、次に、マッチングエンジンに書き込まれたC言語で実行されるバイトコード、一連のにコンパイルされます。

用途:あいまい一致

元の文字:?^ $ * + {} [] |()\

♦ワイルドカード「」(nは置換されていてもよい以外\)

その他の点は文字を表し

2つのドットは、2つの文字を表します

<以下のプログラムはpycharmインタラクティブな環境で実行されています>

findAllのリストに戻るには資格があり、すべてのコンテンツと一致します

輸入再
再度。findAll( "a..x"、 "asdasdxdf")
[ 'asdx']

♦^:(唯一の試合の開始時に)...で始まります

re.findall( "^ a..x"、 "adsxdfdfhu")
[ 'adsx']

繰り返し記号:* +?{}

♦*:一致する(0 + 00)回は貪欲な試合に属し

re.findall( "アレックス*"、 "asdsadalexxx")
[ 'alexxx']
re.findall( "アレックス*"、 "asdsadale")
[ 'エール']

♦+:マッチ(1 + 00)回(文字の前にある+記号を一致させるためには、一度現れなければならない)貪欲な試合に属し

re.findall( "アレックス+"、 "asdsadalexxx")
[ 'alexxx']
re.findall( "アレックス+"、 "asdsadale")
[]#空のリストは、に一致がないことを示し

♦?:マッチ(0、1)回

re.findall( "アレックス?"、 "asdsadalexxx")
[ 'アレックス']
re.findall( "アレックス?"、 "asdsadale")
[ 'エール']

♦{}

{0} == *

 {1} == +

{0、1} ==?

{N}:n回

{1、N}:1を繰り返し - n回(1〜のみコンマN、スペースなし)

{1、N}:1を繰り返し - n回(1〜のみコンマN、スペースなし)

{0、N}:0リピート - n回(nは0〜のみカンマ、スペースを使用しない場合)

re.findall( "アレックス{6}"、 "asdbhalexx")
[]
re.findall( "アレックス{6}"、 "asdbhalexxxxxx")
[ 'alexxxxxx']

re.findall( "アレックス{1,6}"、 "asdbhalexxx")
[ 'alexxx']

不活性試合を♦:* + Plusの?

re.findall( "アレックス*?"、 "asdasdalexxx")#1 マッチ0 
[ 'ALE'] 
re.findall( "アレックス+?"、 "asdasdalexxx")マッチ#1 
[ 'アレックス']

♦文字セット[]

機能記号文字セット - ^ \

上記の3つの記号文字セット、その他の特殊な機能シンボルに加えて

re.findall( "X [YZ]"、 "xyuuuu")
[XY ''] 
re.findall( "X [YZ]"、 "xyuxzu")
[XY ''、 'XZ']
re.findall( "WWW [百度]"、 "wwwbaidu")
[ 'wwwb']
re.findall( "X [YZ] P"、 "xypuuxzpuzyzp")
[ 'XYP'、 'XZP']
re.findall( "X [Y、Z ] P"、 "xypuuxzpux、P")#1 コンマ場合、通常の文字
[ 'XYP'、 'XZP' 、X 'P']
re.findall( "X [Y * Z ] P"、 "xypuuxzpuxの*はP")#1 アスタリスクときに通常の文字
[ 'XYP'、 'XZP' 、 'のx *のP']

♦ - :

[AZ]:ZにAを表します

[A - Z]:Zに表します

re.findall( "Q [AZ]"、 "QU")#A - Z的其中一个
[ 'ク'] 
re.findall( "Q [AZ]"、 "現状")
[ 'QU']
re.findall( "Q [AZ] * "、 "quosdsa")#1 繰返しコンテンツマッチング括弧
[ 'quosdsa'] 
re.findall( "Q [AZ] +"、 "quosdsa")
[ 'quosdsa']
re.findall( "Q [0-9]" 、 "qsdfdasf8")#0〜9 項に
[] 
re.findall( "Q [0-9] *"、 "qsdfdasf8")
[ 'Q']
re.findall( "Q [0-9] *"、 "q9sdfdasf8")
[ 'Q9']
re.findall( "Q [0-9] *"、 "q9235345sdfdasfq8")
[ 'q9235345'、 'Q8']

♦^ []以外を示して置きます

re.findall( "Q [^ AZ] "、 "Q123")#の一致でない場合AZ [ 
'Q1を'] 
re.findall( "Q [^ AZ]"、 "qzsd")
[]
re.findall( "\([^()] * \)"、 "12+(34 * 6 + 2-5 *(2-1))")   
[ '(2-1)']

エスケープ文字メタ文字\

バックスラッシュはメタ文字は、\などの特別な機能を、削除続きます。

通常の文字が続くバックスラッシュは、\ dと特殊な機能を実現します

【0--9]クラスに相当し; \ Dは、任意の10進数字と一致します

\ D数字以外の文字にマッチします。クラスと同等の[^ 0-9]

\ Sは、任意の空白文字と一致し、クラスに相当[\ + \ N R \ \ F \ V]

\ Sは、任意の非空白文字に一致する;クラスに相当[^ \ + \ n \ R \ F \ V]

クラスと同等の[-ZA-Z0-9]; \ Wは任意の英数字の文字に一致し

クラスと同等の[^-ZA-Z0-9]; \ Wは、英数字以外の文字にマッチします 

\ Bは、などのスペース、&、#、として、境界の特殊文字にマッチします

例:

re.findall( "\ dの"、 "12 +(34 * 6 + 2-5 *(2-1))")
[ '1'、 '2'、 '3'、 '4'、 '6'、 '2'、 '5'、 '2'、 '1'] 
re.findall( "\のD +"、 "12 +(34 * 6 + 2-5 *(2-1))")
[ '12'、 '34'、 '6'、 '2'、 '5'、 '2'、 '1']
re.findall( "www.baidu"、 "www.baidu")
[ 'www.baidu'] 
re.findall( "www.baidu"、 "WWWの\のnbaidu")
[] 
re.findall(「WWW \ .baidu 」、 "www.baidu")
[ 'www.baidu']
re.findall( "WWW *百度"、 "WWW * Baiduは")
[] 
re.findall( "WWW \ *百度"、 "WWW *百度")
[ 'WWW * Baiduの']

 \ Pythonと再環境では意味を脱出したし、次が必要とされているので、ネイティブ\を開始し、この時間は、プラスが先行またはrをスラッシュ、通常のスラッシュとBであります

コンテンツの後ろにr「は」エスケープせずに、オリジナルコンテンツです

re.findall( "I \ B"、 "こんにちは、アイレックスIラブ")   
[] 
re.findall(R&LT "I \ B"、 "こんにちは、アイレックスI愛")I取り戻す#スペース
[ 'I']を
re.findall( "私はBを\\"、 "こんにちは、私はアイレックス愛")
[ 'I']

特別な4-スラッシュ:

\はで再かつ効果でのpythonを逃れた、\ Lに再取得するために、あなたのpythonを通過する必要があるため、\\リットルと環境は、2つの2 \\をエスケープする必要があります\\必要な再、変更ので、 4つのスラッシュへ

re.findall( "C \\\\ L" "ABC \ lerwt")#匹配C \ L 
[ 'C \\ L']
re.findall(R "C \\ L"、 "ABC \ lerwt")#匹配C \ L 
[ 'C \\ L']

♦|:または

re.findall( "KA | B"、 "asdkasf")
[ 'KA'] 
re.findall( "KA | B"、 "asdkabsf")
[ 'KA'、 'B'] 
re.findall(「KA | B 」、 "asdkbsf")
[ 'B']
re.findall( "KA | B"、 "asdkbsf")
[ 'B'] 
re.findall( "KA | B"、 "asdka | BSF")
[ 'KA'、 'B'] 
re.findall(「KA | BC」、 "asdka | BSF")
[ 'KA']
re.findall( "KA | BC"、 "asdka | bcsf")
[ 'KA'、 'BC']

♦()グループ化

re.findall( "(ABC)+"、 "abcccccccccc")
[ 'ABC']

findAll:マッチのリストに文字列内のすべて

検索:、成功した試合はオブジェクトを返し、見ていないの条件を満たし見つける使用(.group)

re.search( "[AZ] +"、 "alex34asd19")。グループ()
'アレックス'

(?P <グループ名>正規):グループ

re.search( "(?P <名> \ワット+)"、 "alex34")。グループ()
'alex34'

アレックスはその後、一人で利用したいです:

re.search( "(?P <名前> [AZ] +)\ D +"、 "alex34asd19")。グループ()
'alex34' 
re.search( "(?P <名前> [AZ] +)\ D +" 、 "alex34asd19")。グループ( "名前")
'アレックス'
re.search( "(?P <名前> [AZ] +)(?P <年齢> \ D +)"、 "alex34asd19")。グループ( "年齢")
'34'

  

  

 

 

 

  

 

 

  

 

おすすめ

転載: www.cnblogs.com/dabai123/p/11368907.html