正規表現を使った文字列検索

python で作成した
dayrec
pcsv
pdata
の各プログラムでは、re.findall という正規表現で検索できる検索方法を使用しています。
そのため、検索キーワードに正規表現がしようできるようになりました。

正規表現で使用する特殊文字

特殊文字 説明
. (ドット) 任意の1文字
^ 行頭
$ 行末
* 任意の文字0回以上繰り返し
+ 任意の文字1回以上繰り返し
? 任意の文字0回以上繰り返し
{n} n回の繰り返し
{n,} n回以上の繰り返し
{m,n} m~n回の繰り返し

 

 

 

 

 

 

 

 

[ ]角カッコで囲ったパターンを「文字クラス」とが言いますが [ ] 内のいずれかの文字に一致するかどうかを調べます。

特殊文字 説明
[文字の並び] 文字の並びのいずれかの文字
[^文字の並び] 文字の並び以外の文字

 

パターン 説明
[abc] abcのいずれか
[0-9] 0~9のいずれか
[A-Z] A~Zのいずれか
[A-Za-z] A~Z, a~zのいずれか
[^0-9] 0から9以外の文字

 

文字クラスの簡易表現

特殊文字 説明
\s 空白
\S 空白以外
\d 数字
\D 数字以外
\w 英数字、[A-Za-z0-9]と同じ
\W 英数字以外
\A 文字列の先頭
\Z 文字列の末尾

 

グループと選択

特殊文字 説明
( ) グループ化。ただし、当該プログラムではサポートしていません。
| いずれか(パイプライン)

 

|その他

特殊文字 説明
\b 単語の境界
\\ \

 

正規表現を使用した検索の具体例

1.パイプ来を使ってOR 検索を行う

データ文= 今日は晴れたが後で曇ってきた
入力キーワード= 晴|曇
検索されたワード= 晴, 曇

2.ドット . を使って任意の代わりにする

データ文= 22年9月末時点で中国の金保有量は1948トンで、世界6位に順位を上げている。
入力キーワード= 中国.+順位
検出されたワード= 中国の金保有量は1948トンで、世界6位に順位

データ文= 高橋さんと高梁さんや渡辺氏と渡部氏は読みが同じ。
入力されたキーワード= 高.さん|渡.氏
検出されたワード= 高橋さん, 高梁さん, 渡辺氏,  渡部氏

3.特定の日付を検出する

データ文= 2022/11/02, 2022/11/04, 2022/11/08, 2022/11/10
入力されたキーワード= 2022/11/0[4-8]
検出されたワード= 2022/11/04, 2022/11/08

 

以上 2022/11/20記

ホームページに戻る