正規表現

正規表現とは、文字列の集合を一つの文字列で表現する方法です。
正規表現を覚えていると、エディタでの検索時(grepなど)やLinuxコマンド操作での検索作業が格段に楽になります。覚えておいて決して損はない知識の一つです。

正規表現の繰り返し表現

記号説明
*0回以上の繰り返し
+1回以上の繰り返し
?0 or 1
.任意の1文字

正規表現の基本的な使用例

正規表現      意味使用例      結果
.*任意の1文字を0回以上繰り返す.*A.*BBBABB、BBBA、ABB、Aなど
.+任意の1文字を1回以上繰り返すA.+ABCD、AAA、AEなど
c*cが0回以上続くc*AcccA、ccA、cA、Aなど
c+cが1回以上続くC+AccA、cAなど
c?cが0~1回MAC ?OSMACOS、MAC OS
c|dc or d(A|B)CAC、BC
(c|d)?c or dが0~1回(A|B)?CAC、BC、C
[cde][]内のどれか1文字[cde]AcA、dA、eA
[0-9A-Za-z]数字かアルファベット1文字[0-9A-Za-z]0、9、A、Z、a、zなど
[]cde]]cdeの内どれか1文字[]cde]A]A、cA、dA、eA
[.*]. or *の内どれか1文字A[.*]BA.B、A*B
[^0-9]0~9以外の1文字[^0-9a-z]AAA、BA、_Aなど
^c先頭がc^ACACbcd、ACEFG、AC123など
^[0-9][0-9]先頭が00~99^[0-9][0-9]00ABGT、48tgh、917、1747
c$最後がcAC$1560AC、gaACAC、BVFACなど
^$^$空のみ
^.*$全ての文^.*$全ての文
c\{n\}cがn文字続くA\{3\}AAA
c\{n,\}cがn文字以上続くA\{3,\}AAA、AAAA、AAAAAなど
c\{n,m\}cがn回からm回A\{3,4\}AAA、AAAA
\(バックスラッシュ)次にくる文字をメタキャラではなく通常の文字として処理するtouch \.\.abc\.\...abc..というファイルを生成
\w英数字かアンダーバーを表す(a~z,A~Z,0~9)\w+abc、a001、001
\d数字を表す(0~9)\d+1、12、123、001

正規表現の応用的な使用例

用途正規表現      Linuxでの使用例
電話番号(全般:ハイフン付)に一致する正規表現^[0-9]+-[0-9]+-[0-9]+$$ grep -EHn ^[0-9]+-[0-9]+-[0-9]+$ test6.txt
※オプション -Eで拡張正規表現を使用
 オプション -Hで検索結果にファイル名を付けて表示
 オプション -nで検索結果に行番号を付けて表示
携帯番号(ハイフン付)に一致する正規表現^'(090|080|070)-[0-9]{4}-[0-9]{4}'$$ grep -EHn ^'(090|080|070)-[0-9]{4}-[0-9]{4}'$ test6.txt
メールアドレスと一致する正規表現^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+$$ grep -EHn ^[a-zA-Z0-9_\.\-]+?@[A-Za-z0-9_\.\-]+$ test6.txt
郵便番号(ハイフン付)と一致する正規表現^[0-9]{3}-[0-9]{4}$$ grep -EHn ^[0-9]{3}-[0-9]{4}$ test6.txt
ファイル名から数値だけを抜き出す''s/^\([0-9]*\)\.txt/\1/'$ echo 19.txt | sed 's/^\([0-9]*\)\.txt/\1/'
19
※数字を表す「[0-9]*」を「\(」と「\)」で囲み、「\1」だけにして、数字の19だけが出力される

正規表現で出来ないこと

  • 複数ファイルへの一斉変換
  • ファイルの一斉リネーム
  • 番号を繰り上げての置換

コメントを残す

メールアドレスが公開されることはありません。

email confirm*

post date*

「駑馬十駕」 IT系情報を中心に調べた事をコツコツ綴っています。

モバイルバージョンを終了