二、テキスト抽出——正規表現

4121 ワード

私たちは爬虫類を書いて、主にやはりホームページの中のテキストの情報を抽出して、正規表現は簡単にこの任務を完成することができて、この節、私たちはいくつかの基本的な正規表現の使い方を勉強して、後での章の中で、適当な時にいくつかの高級な使い方を挿入します.
pythonでは、正規表現を使用するにはreパッケージを導入する必要があります.
1.普通文字に一致する.
任意の数字、アルファベット、句読点などは、直接一致することができます.
 1 import re
 2 
 3 #          123
 4 string = '012345'
 5 p = re.search('123', string)
 6 print(p.group(0))
 7 
 8 #          abc
 9 string = '012abc345'
10 p = re.search('abc', string)
11 print(p.group(0))
12 
13 #            ,"}
14 string = '01234,"}5'
15 p = re.search(',"}', string)
16 print(p.group(0))

2.特殊文字
正規表現には特殊な意味を持つ文字が定義されています.これらの文字は、エスケープを使用してから文字通りに理解できます.
文字
意味
例を挙げて説明する
^
一致する文字列の先頭
例えば^abcはabcdに一致するが0 abcには一致しない
$
一致する文字列の末尾
例えばabc$は123 abcに一致するが123 abcdに一致しない
*
前の文字が0回または複数回一致する
例えばba*はbまたはba、またはbaaaに一致することができる
+
前の文字が1回または複数回一致する
例えばba+はbaまたはbaaaaに一致するが、bに一致しない
?
前の文字が0回または1回一致
例えばba?bまたはbaは一致するがbaaは一致しない
()
メタグループと呼ばれるサブ式を表し、メタグループを使用してサブ列を抽出できます.
例えばabc(123)defは、文字列000 abc 123 defghをマッチングするために使用される場合、abc 123 defと123の2つの文字列にマッチングすることができる.
[]
[]の間に配置された文字は、いずれかに一致することを示すかまたはの関係であり、注意が必要なのは^ここでは、その中に一致しない文字を表す文字、例えば[^345]は、一致が3ではなく、4ではなく、5ではない文字を表す
[abc]は、文字aと一致してもよいし、文字bと一致してもよいし、一致してもよいc[^abc]は、a,b,c以外のすべての文字[0-9]と一致してもよい0,1,2,3,4,5,6,7,8,9[a-z]は26個の小文字[A-Z]と一致して26個の大文字を一致させることができる
|
表示または関係
ab|12は、文字列ef 12 cdab 34のabおよび12に一致することができる
{}
前の文字の一致回数を指定できます
a{3}は文字列abaaacdのaaaに一致するが、aaに一致しない.a{1,3}はa,aa,aaa,a{2,}は少なくとも2つのaに一致し、a{1,}は少なくとも1つのaに一致し、a+a{0に等価である.}は少なくとも0回のaに一致し、a*に等価である.
.
改行以外のすべての文字を一致させることができます
例えばa.dはa_に一致するd,abd,a 0 d等
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ここは*、+、?特別な説明が必要です.
*と+はデフォルトで貪欲なモードを採用しています.例えば、a*はabcaaaefのaaaを優先的にマッチングし、協力すれば?使用すると、a*?などの非貪欲なモードを採用することができます.abcaaadefのaが優先的に一致します
3.エスケープ文字
文字
意味
例を挙げて説明する
\d
任意の数値に一致
例えばd{3}は、123,456,011など任意の3つの数字からなる文字列に一致する
\D
任意の数値以外の文字に一致
例えばD{2}はa_に一致し、ab, _#, aaなどの任意の2つの非数値文字からなる文字列は、a 0,00,0の文字列
未完待续..
転載先:https://www.cnblogs.com/bzaq/p/10534520.html