この記事では、正規表現のPython実装、一般的にシンボルの様々な使用Pythonの正規表現の詳細な分析、機能を説明し、方法や注意事項の使用が友人は、次を参照できる必要があるので、
記事は正のpythonの実現を記述する式関数。以下のように、ご参考のためにあなたに共有します:
前文:
まず第一に、正規表現(正規表現)は何ですか?
たとえば、私たちは、文字列を決定したい「adi_e32fvを、Lsの」部分文字列「e32f」が含まれている場合、我々は、名前の末尾に名前「キング」、「5」に名前を見つけるために百万名を含むtxtファイル内の別の例があり、その後、プリントアウト。結果は次のとおりです。「王5」、「王5」、「ビッグファイブの王、」「王暁呉」......
前に我々は見つけるために、文字列関数を使用していますが、コードは非常に実装するために複雑になります。今日では、正規表現は、その上にのみre.findall(「王。*?ファイブ」、TXT1)が必要です!正規表現は、Webクローラーの最も基本的な知識を書かれている、あなたは、URLの要件を満たすために、いくつかの文字列を収集し、HTMLに正規表現を使用することができます。以下は、式の定期的な基礎の個体の一部をまとめたものです。
(動作環境:32 Win8システム、実行ツール:python2.7.9のEclipse +)。
本体:
図1に示すように、モジュールの再最初に導入パイソン。
2、メタ文字^ $ * + {} [] \ |。?()
モジュールのfindAll(STR1、STR2)メソッド再列STR1のSTR2フォーマットに一致する文字列を返します。たとえば、文字列「DITドットDET、DCT DITドット」とが一致する「DIT」の結果で:
str1 = 'dit dot det,dct dit dot'
print re.findall('dit',str1)
結果:['dit', 'dit']
|役割: 'DIT | DCTは' DITやDCTを表します。
str1 = 'dit dot det,dct dit dot'
print re.findall('dit|dct',str1)
結果:
['dit', 'dct', 'dit']
[]機能:[IC]、またはC iを表し、例えば、D 'は、[IC] t' はDITとDCT、および 'DIT | DCT' の両方を表し当量
str1 = 'dit dot det,dct dit dot'
print re.findall('d[ic]t',str1)
```bash
結果:
['dit', 'dct', 'dit']
役割:[ IC]は^ iおよびCに加えて、即ち、負を表します
str1 = 'dit dot det,dct dit dot'
print re.findall('d[^ic]t',str1)
結果:['dot', 'det', 'dot']
2の効果:サブストリング位置の先頭にDITのDIT、むしろ最初のDCT時より:
str1 = 'dit dot det,dct dit dot'
print re.findall('^dit',str1)
print re.findall('^dct',str1)
結果:
['dit'][]
端位置までではなく、端DCTのドットでサブ:
str1 = 'dit dot det,dct dit dot'
print re.findall('dot$',str1)
print re.findall('dct$',str1)
結果:
['dot'][]`
役割:dtは任意の文字をdとtの間で省略されている表します。
str1 = 'dit dot det,dct dit dot'
print re.findall('d.t',str1)
結果:
['dit', 'dot', 'det', 'dct', 'dit', 'dot']
+アクション:ディ+ tは省略一つ以上の「I」とT dとのを表します。
str1 = 'd dt dit diit det'
print re.findall('d.+t',str1)
結果:
['dit', 'diit']
効果:DI Tが表す「I」とT Dとの間に複数のゼロから省略:
str1 = 'd dt dit diit det'
print re.findall('d.*t',str1)
結果:
['dt', 'dit', 'diit']
よく、および『+』または「『』」使用しました。「+」「任意の複数の要素を省略して示し複数の要素のいずれかを省略するゼロを表し、」:
str1 = 'd dt dit diit det'
print re.findall('d.+t',str1)
print re.findall('d.*t',str1)
結果:['d dt dit diit det']['d dt dit diit det']
?効果は:参照+マッチング結果、「DIT」、「ドット」を満たす「D + t」のマッチング状態、及び出力整合条件を満足することである最長のサブ「DITドットDET、DCT DITドット 」 これは貪欲マッチと呼ばれています。あなたは出力に、単に「「+」が続く中、最短一致文字列をしたい場合は?「:(注:のための」「だけ」で、同じである)」「に続いて」?
str1 = 'd dt dit diit det'
print re.findall('d.+?t',str1)
結果:['dit', 'dot', 'det', 'dct', 'dit', 'dot']
?私は、DTで欠かを表し、tの役割2 :?ディ、ディアイティ整合条件が満たされています。
str1 = 'd dt dit diit det'
print re.findall('di?t',str1)
結果:['dt', 'dit']
{}効果:ジDとTの間に発現{N} T N番号'iが':
str1 = 'dt dit diit diiit diiiit'
print re.findall('di{2}t',str1)
結果:
['diit']
{}効果の二つは:DIは{N、M} T 'は、I'、DとTの間のmに対するnを表します。
str1 = 'dt dit diit diiit diiiit'
print re.findall('di{1,3}t',str1)
結果:['dit', 'diit', 'diiit']
式中、n及びmは両方とも省略することが可能です。:のように'*'機能{、}の任意の数を表し、そして、{N}は、任意の数に1を表すnは、{、} Mがmに0を表します
str1 = 'dt dit diit diiit diiiit'
print re.findall('di{1,}t',str1)
print re.findall('di{,3}t',str1)
print re.findall('di{,}t',str1)
結果:
['dit', 'diit', 'diiit', 'diiiit']
['dt', 'dit', 'diit', 'diiit']
['dt', 'dit', 'diit', 'diiit', 'diiiit']
\役割:エスケープ文字にメタキャラクタの廃止
str1 = '^abc ^abc'
print re.findall('^abc',str1)
print re.findall('\^abc',str1)
結果:
[]['^abc', '^abc']
\役割2:事前に定義された文字
str1 = '12 abc 345 efgh'
print re.findall('\d+',str1)
print re.findall('\w+',str1)
結果:
['12', '345']
['12', 'abc', '345', 'efgh']
()アクション:内部文字列のみ出力マッチング文字列に一致した後は、「()」の内容:
str1 = '12abcd34'
print re.findall('12abcd34',str1)
print re.findall('1(2a)bcd34',str1)
print re.findall('1(2a)bc(d3)4',str1)
結果:
['12abcd34']
['2a']
[('2a', 'd3')]
3、REモジュールの主な方法のfindAll()、finditer()、一致()、検索()、コンパイル()、スプリット()、サブ()、SUBN()。
re.findall(パターン、文字列、フラグ= 0)
処置:文字列の右とパターンマッチング検索文字列に左から、結果がリスト形式で返されました。
str1 = 'ab cd'
print re.findall('\w+',str1)
結果:[ 'AB'、 'CD']
re.finditer(パターン、文字列、フラグ= 0)
役割:その機能とre.findall同じですが、イテレータとして返された結果。
str1 = 'ab cd'
iter1 = re.finditer('\w+',str1)
for a in iter1:
print a.group(),a.span()
結果:
ab (0, 2)
cd (3, 5)
(注:a.groupは()の調整を一致文字列を満足を返し、a.span()は、開始位置、文字列の終了位置を返します)
re.search(パターン、文字列、フラグ= 0)
処置:文字列の右とパターンマッチングの検索文字列を左から、一致結果はいずれも、そうでない場合は検索インスタンスを返されません。
str1 = 'ab cd'
result = re.search('cd',str1)
if result == None:
print 'None'
else:
print result.group(),result.start(),result.end()
結果:CD 3 5
re.match(パターン、文字列、フラグ= 0)
処置:頭と文字列がパターンに一致するかどうかを判断するには、試合のインスタンスは、他の方法ではいずれも、返されません。
str1 = 'ab cd'
result = re.match('cd',str1)
if result == None:
print 'None'
else:
print result.group(),result.start(),result.end()
結果:なし
re.compile(パターン、フラグ= 0)
効果:パターンマッチングコンパイルされたフォーマットは、オブジェクトのインスタンスを返します。コンパイルするための正規表現、大幅にマッチング速度を向上させることができます。
str1 = 'ab cd'
pre = re.compile('ab')
print pre.findall(str1)
結果:[ 'AB']
re.split(パターン、文字列、maxsplit個= 0、フラグ= 0)
役割:ときに、文字列のパターンマッチングを分割行います。
str1 = 'ab.c.de'
str2 = '12+34-56*78/90'
print re.split('\.',str1)
print re.split('[\+\-\*/]',str2)
結果:
[ 'AB'、 'C'、 '']
[ '12'、 '34'、 '56'、 '78'、 '90']
re.sub(パターン、REPL、文字列、カウント数= 0、フラグ= 0)
処置:における置換文字列を満たすREPL列に規則的なパターン:
str1 = 'abcde'
print re.sub('bc','123',str1)
結果:a123de
re.subn(パターン、REPL、文字列、カウント数= 0、フラグ= 0)
役割:その機能とre.sub()は同じ、しかし結果は、置換の数を表す数値よりも返さ
str1 = 'abcdebce'
print re.subn('bc','123',str1)
結果:( 'a123de123e'、2)
774711191、高齢者が学んでいる方法を見て:私たちは、Pythonのバックルqunを学ぶお勧めします!基本的なWeb開発Pythonスクリプトからなど、爬虫類、ジャンゴ、データマイニング、へ[PDF、実際のソースコード]、ゼロベースのプロジェクトの戦闘データに仕上げています。どんな小さなPythonのパートナーに与えられました!毎日、ダニエルは学び、細部に注意を払う必要性に、クリックにご参加くださいする方法のいくつかを共有するために、タイミングPythonの技術を説明する学習者集会のPython