非エンジニアのエンジニア道

非エンジニアからエンジニアに転向!その勉強の軌跡を載せていきます。

正規表現

なんとなく使ってたので、改めて。

正規表現とは

文字列のパターンを表現する表記法で、文字列の検索や置換を行うときに利用される。
通常の文字と、特別な意味を持った記号(メタ文字)を組み合わせて表記する。

メタ文字

記号 意味
任意の文字にマッチ
直前の文字の0回以上マッチ
+ 直前の文字の1回以上にマッチ
? 直前の文字の0回または1回にマッチ
{n} 直前の文字がn回にマッチ
{n,} 直前の文字がn回以上にマッチ
{n,m} 直前の文字がn回以上m以下にマッチ
^ 行頭にマッチ
$ 文末にマッチ
[] []内に含まれる一文字にマッチ
[^ ] []内に含まれないものにマッチ
区切られたいずれかの文字にマッチ
() グループ化する
\1、\n 後方参照。()にマッチした文字列にマッチ

キャプチャ

文字列の中から正規表現に一致する部分文字列を抜き出す

文法の種類について

sedgrepをオプションなしで使おうとすると、下記で\が必要となる
「+」「?」「{」「}」「(」「)」「|」

POSIX

Portable Operating System Interface
sed -r」「grep -E」とオプションをつけると、上記\が不要となり、すっきりする

Perl

文法がさらに追加。最長マッチを行うかも指定できる
代表的なものは下記

記号 意味
\d 数字にマッチ = [0-9]
\D 数字以外の文字にマッチ = [^\d]
\w アルファベット、数字またはアンダーバーにマッチ = [a-zA-Z_0-9]
\W アルファベット、数字やアンダーバー以外の文字にマッチ = [^\w]
\s 空白文字、\f、\n、\r、\t や \vにマッチ
\S 空白文字以外の文字にマッチ = [^\s]

grepコマンド

ファイルに対してパターンマッチングを行い、マッチする行を出力する。

grep option searchword targetfile

オプション -n で行番号も表示する

grep -n え test.txt

sedコマンド

文字列の置換,行の削除を行う

sed option targetfile

オプション -e で置換処理
オプション -f でファイルを指定して、そのファイル内に記載されている処理を行う

sed -e "s/だめ/いいよ/g" test.txt