まず、通常の(再)
その性質上、正規表現は(または再)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'