python-は正規関数reを使用する.findallは不定長で一定のフォーマットの文字列を処理します
2218 ワード
Python正規表現 reモジュールはPython言語にすべての正規表現機能を持たせる. compile関数は、モード文字列とオプションのフラグパラメータに基づいて正規表現オブジェクトを生成します.このオブジェクトには、正規表現の一致と置換のための一連の方法があります. reモジュールは、モード文字列を最初のパラメータとして使用するこれらの方法の機能と完全に一致する関数も提供する.
findall
正規表現が一致するすべてのサブストリングを文字列に検索し、リストを返します.一致が見つからない場合は、空のリストを返します.
注意:matchとsearchは1回一致し、findallはすべて一致します.
構文の形式は次のとおりです.
パラメータ: string:一致する文字列. pos:オプションのパラメータで、文字列の開始位置を指定します.デフォルトは0です. endpos:オプションのパラメータで、文字列の終了位置を指定します.デフォルトは文字列の長さです.
re.compile関数
compile関数は、正規表現をコンパイルし、match()、search()、findall()などの関数で使用できる正規表現(Pattern)オブジェクトを生成するために使用されます.
構文の形式は次のとおりです.
パラメータ: pattern:文字列形式の正規表現 flags:オプションで、大文字と小文字を無視したり、マルチラインモードなど、マッチングモードを表します.具体的なパラメータは次のとおりです. re.I大文字小文字を無視する re.Lは特殊文字セットw,W,b,B,s,Sが現在の環境に依存する を表す. re.Mマルチラインモード re.Sは.また、改行文字を含む任意の文字(.改行文字を除く) . re.Uは特殊文字セットw,W,b,B,d,D,s,SがUnicode文字属性データベース に依存することを示す re.X可読性を高めるために、スペースおよび#の後の注釈 を無視する
例:
参照先:
https://www.runoob.com/python/python-reg-expressions.html
findall
正規表現が一致するすべてのサブストリングを文字列に検索し、リストを返します.一致が見つからない場合は、空のリストを返します.
注意:matchとsearchは1回一致し、findallはすべて一致します.
構文の形式は次のとおりです.
findall(string[, pos[, endpos]])
パラメータ:
re.compile関数
compile関数は、正規表現をコンパイルし、match()、search()、findall()などの関数で使用できる正規表現(Pattern)オブジェクトを生成するために使用されます.
構文の形式は次のとおりです.
re.compile(pattern[, flags])
パラメータ:
例:
'''
re.findall :
: , ,
book1,test1,1001, book2,test2,1002, book3,test4,1004
book1,test5,1005, book6,test6,1006, book7,test7,1007, book1,test8,1008
book9,test9,1009, book10,test10,10010
'''
import re
def analyzer_line(line):
global pattern
ary = pattern.findall(line)
for i in range(len(ary)):
print(ary[i][1], ary[i][2], ary[i][3])
'''
,600 ,
'''
def anlyzer_file(file):
book_file = open(file, "r")
while True:
line = book_file.readline()
if not line:
break
analyzer_line(line)
def anlyzer_file2(file):
with open(file, 'r') as f:
for line in f:
analyzer_line(line)
if __name__ == '__main__':
str = "(| )(\S+),(\S+),(-*\d+)(,|)"
pattern = re.compile(str, re.IGNORECASE)
book_file = "./logs/books.log"
anlyzer_file2(book_file)
参照先:
https://www.runoob.com/python/python-reg-expressions.html