2021.11.26
正規表現についてと代表例
本記事の対象者
LPIC level1習得を目指す初学者の方
今回の内容
今回は、正規表現について解説します。
正規表現とは
正規表現とは文字列のパターンを記述するための表現です。
Linuxだけで用いるものではなく、プログラミング言語などでも広く使われるものです。
例えば、以下のような場面は多くあるでしょう。
・「https://」で始まり、以下に任意の文字列が入るものを指定したい。(URL)
・「-」の前に3文字、後に4文字の数字が入る文字列を指定したい。(郵便番号)
このような指定をしたい際に正規表現を使用することができます。
代表的正規表現一覧
正規表現の具体的な記法のうち、代表的なものを一覧で紹介します。正規表現 | 説明 | 具体例 | 具体的表記 |
---|---|---|---|
^ | 先頭に一致する。 | 先頭が「a」で始まる。 | ^a |
$ | 末尾に一致する。 | 末尾が「z」で終わる。 | z$ |
[〇〇〇] | いずれかの文字に一致する。 | a, b, cのいずれかに一致する。 | [abc] |
[〇-〇] | いずれかの文字に一致する。(範囲指定) | a~zのいずれかに一致する。 | [a-z] |
[^〇〇〇] | いずれかの文字に一致しない。 | a, b, cのいずれかに一致しない。 | [^abc] |
[^〇-〇] | いずれかの文字に一致しない。(範囲指定) | a~zのいずれかに一致しない。 | [^a-z] |
.(ドット) | 任意の一文字に一致する。 | 「sample」という文字列の直後に任意の一文字がある | sample. |
\(バックスラッシュ) | 直後の一文字をエスケープする。
※エスケープ |
「$」で始まり、直後に任意の一文字がある。 | ^\$. |
\d | すべての数字。 | 数字で終わる。 | \d$ |
* | 直前の一文字の0回以上の繰り返しに一致する。 | 「sample」という文字列を含む。 | .*sample.* |
以下は拡張正規表現 | |||
+ | 直前の一文字の1回以上の繰り返しに一致する。 | 「sample」という文字列の前後に文字を含む。 | .+sample.+ |
? | 直前の一文字が0文字か1文字の場合に一致する。 | 末尾が「samples」もしくは「sample」で終わる。 | .+samples?$ |
|(パイプ) | 前後のいずれかに一致する。 | 「ab」または「bc」に一致する。 | ab|bc |
{n} | 直前の一文字をn桁で指定する。 | 3桁の数字で始まる。 | ^/d{3} |
これらの正規表現を使用して、複雑な文字列条件を指定することができます。
拡張正規表現は、Linuxでは使用できないコマンドが一部あります。
例えば、冒頭の「URL」と「郵便番号」はどのように記述できるでしょうか。少し考えてみてください。
URL
※正規表現の始まりと終わりは「/」で表現されます。
郵便番号
まとめ
今回は、正規表現について解説しました。
Linuxの操作においては、「grep」コマンドでのファイル検索や「sed」コマンドでの置換の際に使用します。
それぞれの具体的な使い方については、コマンドごとの記事を参照してください。