スポンサーリンク

正規表現でファイルを検索(findall())して、マッチした複数文字列を取得

まずはファイルオープン

まずはファイルオープンして、ファイルの中身を変数に代入します。
wiht〜openでファイルオープンするとクローズ忘れがなくなるので便利です。

そして、read()でファイルの中身を変数に格納します。

例えば、in.txtをファイルオープンして、変数strにファイルの中身を格納する場合は、
下記のように書きます。

with open('in.txt','r') as f:
	str = f.read()

スポンサーリンク

re.findall()で検索して文字列を取得

あとは、re.findall()で検索して文字列を取得します。
正規表現を扱うためreモジュールをimportします。

import re

あとは、re.findall()で文字列を検索します。
例えば、小文字の英字を検索する場合は下記のように書きます。

matchWord = re.findall(r'[a-z]', str)

マッチした単語をprint出力しています。
for i in matchWord:
	print(i)

サンプルコード

例えば、下記のin.txtがあったとします。

 $ cat in.txt 
a98b0s
38d9l9
eei6

下記がサンプルコードになります。
 $ cat sample.py 
#!/usr/bin/env python3
# coding: UTF-8

import re

with open('in.txt','r') as f:
	str = f.read()

matchWord = re.findall(r'[a-z]', str)
for i in matchWord:
	print(i)

下記が実行結果になります。
 $ ./sample.py 
a
b
s
d
l
e
e
i

grepを使って同様のことを実現

grepでも同様のことができます。ワンライナーでもできるので、この用途だけに限れば使い勝手が良いかもしれません。

参考:grepの-oオプションで検索にマッチした部分のみ出力

スポンサーリンク