注意: 正規表現にはいくつかの派生版があり,コマンド grep, sed, awk, perl, ruby, emacs などによって使える正規表現は同じではない. たとえば,Emacsで使える正規表現は grep で使える正規表現よりも表現が豊かである.
理解しながら読み進むことが大切. (簡単なgrepの使い方も参考にせよ). 以下の説明で,半角空白文字を' 'で表すことがある.
\ ^ $ . [ ] *grepでメタ文字を含む文字列をパターン(正規表現)として使うときにはパターン文字列を引用符記号『 ' 』で囲む.
正規表現 | マッチする | マッチしない |
---|---|---|
a | a, ab | A, Ab |
x1 | x1 | X1, x2 |
Apple | Apple | apple, APPLE |
正規表現 | マッチする | マッチしない |
---|---|---|
\\begin | \begin | begin |
\[ | \item[注意] | |
] | ], ]] |
] は [ とペアになって始めてメタ文字となる (以下に説明されているが,文字列 c1c2...cn を囲んで [c1c2...cn] となったときには,c1c2...cnの中の任意の1文字として扱われる).
正規表現 | マッチする | マッチしない |
---|---|---|
^% | 行頭にある% | ' %'(行頭が空白文字) |
^1.1 | 1.1で始まる行 | ' 1.12'(行頭が空白文字) |
正規表現 | マッチする | マッチしない |
---|---|---|
s$ | 行末がs | 's '(行末がsで終わらない) |
\.$ | 行末のピリオド | |
^.$ | 任意の1文字からなる行 | |
^$ | 空行 |
正規表現 | マッチする | マッチしない |
---|---|---|
[abc012] | a,b,c,0,1,2 | a,b,c,0,1,2以外 |
[b-e6-9] | b,c,d,e,6,7,8,9 | b-e,6,7,8,9以外 |
[+-] | +, - | |
[][(){}] | [,],(,),{,}の括弧1つ | |
[\^] | \, \\, ^, a^ | |
[^\] | ^, a^(\を含まない) |
正規表現 | マッチする | マッチしない |
---|---|---|
[^abc012] | d,e,.,3,4,. | a,b,c,0,1,2 |
[^a-zA-Z] | 英文字以外の1文字 | 英文字 |
[^][^] | [,]と^以外 | [,]と^ |
\(r\)
正規表現 | マッチする | マッチしない |
---|---|---|
\(abc\)\1 | abcabc | abcacb |
\([ab]c\)\1 | acac, bcbc | acbc, bcac |
\(abc\(de\)\)\2 | abcdede | abcdeabc |
正規表現 | マッチする | マッチしない |
---|---|---|
a*c | c, ac, aac,aaac,... | |
a.*c | ac, aに任意の文字列が続いてc続く | |
a[0-9]* | aかaの後に数字が続く |
拡張機能を有する grep では次の正規表現が使える場合がある.
r+
r?
次のgrepコマンドを実行し,その結果と示し,コマンドの意味を述べよ. オプション -n はマッチした行番号を表示するオプション.
- grep -n '\\' grepsample.txt
- grep -n '\^' grepsample.txt
- grep -n '\.$' grepsample.txt
- grep -n '^$' grepsample.txt
- grep -n ']' grepsample.txt
- grep -n '\[' grepsample.txt
- grep -n 'です。$' grepsample.txt
- grep -n '[0-9]' grepsample.txt
- grep -n '[A-Z]' grepsample.txt
- grep -n '\.' grepsample.txt
- grep -n '^[0-9]\. ' grepsample.txt
- grep -n '^[0-9]\.[0-9] ' grepsample.txt
- grep -n '[^a-zA-Z0-9]' grepsample.txt
- grep -n '\(Mac\).*\1' grepsample.txt