オープンソース/Linux

情報システムのトピックス-PR-

【 どのような正規表現があるのか 】

2006/02/28

 Linuxのコマンドを「やりたいこと」でまとめました。「やりたいこと」を実行するためのコマンドと使用例を掲載しています。コマンドの基本を学びたい方は「Linuxコマンド道場」を参照ください。ファイルの操作からテキスト・ファイルの処理方法まで,例題に基づいて学べます。

 Linuxコマンド逆引き大全
コマンド集(機能別) | コマンド集(アルファベット順) | コマンド逆引き大全 | シェル・スクリプト・リファンレス

 どのような正規表現があるのか

 「grep」コマンドや「sed」コマンドなどで語句を探すときに正規表現を使うと,複雑なパターンが簡潔に記述できる。grepやsedコマンドで利用できる代表的な正規表現を以下の表に示した。


記号 意味
. 改行文字以外の任意の1文字
* 直前の1文字の0回以上の繰り返しに一致。直前の文字は正規表現でも構わない
^ 行の先頭
$ 行の末尾
[ ] かっこ内の任意の1文字に一致。ハイフン(-)で範囲指定もできる
[^ ] かっこ内の任意の1文字に不一致。ハイフン(-)で範囲指定もできる
\+ 直前の文字の1個以上の繰り返しに一致
\? 直前の文字の0または1文字に一致
\{n\} 直前の文字のn個の繰り返しに一致
\{n,\} 直前の文字のn個以上の繰り返しに一致
\{,m\} 直前の文字のm個以下の繰り返しに一致
\{n,m\} 直前の文字のn個以上,m個以下の繰り返しに一致
pattern1\|pattern2 pattern1またはpattern2のいずれかに一致
\(pattern\) patternをグループ化する。マッチした内容は参照できる
\ 正規表現に使われる記号を普通の文字として扱う

 また,perlで利用可能な正規表現を以下の表に示した。


記号 意味
. 改行文字以外の任意の1文字
* 直前の1文字の0回以上の繰り返しに一致。直前の文字は正規表現でも構わない
^ 行の先頭
$ 行の末尾
[ ] かっこ内の任意の1文字に一致。ハイフン(-)で範囲指定もできる
[^ ] かっこ内の任意の1文字に不一致。ハイフン(-)で範囲指定もできる
+ 直前の文字の1個以上の繰り返しに一致
? 直前の文字の0または1文字に一致
{n} 直前の文字のn個の繰り返しに一致
{n,} 直前の文字のn個以上の繰り返しに一致
{,m} 直前の文字のm個以下の繰り返しに一致
{n,m} 直前の文字のn個以上,m個以下の繰り返しに一致
pattern1|pattern2 pattern1またはpattern2のいずれかに一致
(pattern) patternをグループ化する。マッチした内容は参照できる
\ 正規表現に使われる記号を普通の文字として扱う

 「2003/10/08」のような日付けで始まる行をgrepで検索したい場合は,


$ grep -e "^[0-9]\{4\}/[0-9]\{2\}/[0-9]\{2\}" target_file

とする。

 次に,grepやsedコマンドでの利用例を以下の表に示した。


記号 意味
Hogege Hogegeに一致
[0-9] 1文字の数字に一致
[a-z] 1文字の小文字アルファベットに一致
[A-Z] 1文字の大文字アルファベットに一致
[0-9a-zA-Z] 1文字の数字またはアルファベットに一致
[0-9]\{4\}/[0-9]\{1,2\}/[0-9]\{1,2\} yyyy/mm/ddに一致(mmとddは1文字でもよい)。ただし,sedの置換などでは/記号を\/とエスケープする必要がある
^pattern$ 文字列patternだけを含む行
[Gg]rep Grepまたはgrep に一致
^[^0-9] 行頭が数字でないもの
^.\{10\}$ 10文字の行
test\|TEST testまたはTEST
Woo* Woo,Wooo....に一致

 また,perlでの利用例を以下の表に示した。


記号 意味
Hogege Hogegeに一致
[0-9] 1文字の数字に一致
[a-z] 1文字の小文字アルファベットに一致
[A-Z] 1文字の大文字アルファベットに一致
[0-9a-zA-Z] 1文字の数字またはアルファベットに一致
[0-9]{4}/[0-9]{1,2}/[0-9]{1,2} yyyy/mm/ddに一致(mmとddは1文字でもよい)。ただし,sedの置換などでは/記号を\/とエスケープする必要がある
^pattern$ 文字列patternだけを含む行
[Gg]rep Grepまたはgrep に一致
^[^0-9] 行頭が数字でないもの
^.{10}$ 10文字の行
test|TEST testまたはTEST
Woo* Woo,Wooo....に一致


  • このエントリーをはてなブックマークに追加
  • Evernoteでクリップする
  • 印刷する

連載新着記事一覧へ >>

今週のトピックス-PR-

この記事に対するfacebookコメント

nikkeibpITpro

▲ ページトップ

CIO Computerworld

Twitterもチェック

執筆者一覧

イベントINFO -PR-

最新号

注目の書籍

好評発売中!

イチからわかる Linuxでパソコンを復活させる本

「Linux」で、サポート切れのWindowsパソコン等を“復活”させるテクニックを解説。