fr-itaya / training

0 stars 0 forks source link

正規表現 #9

Closed fr-sato closed 10 years ago

fr-sato commented 10 years ago

■目的

文字列のパターンを表現する正規表現を学び、文字列の検索や置換の仕方を学びます。

■準備

課題は全てLinuxのgrepコマンドで行ってもらいます。 あらかじめ以下内容のテキストファイルを作成しておいて下さい。

12345
67890
123456789
abcde
cdeab
test0123
\100
01-1234-5678
012-3456-7890
sample@fact-real.com
example0110@example.co.jp
test@test
iphone@i.softbank.jp

■課題1

基本的な正規表現方法としてメタ文字があります。 メタ文字を用いて、テキストファイルから以下の値をそれぞれgrepコマンドを用いて表示して下さい。

メタ文字には繰り返し、エスケープなどがあります。
それらを用いて以下の値をそれぞれgrepコマンドを用いて表示して下さい。

実際に正規表現を使うケースとして、 電話番号やメールアドレスなど、決まったフォーマットの値を正しく入力しているかのチェックで用います。 テキストファイルから以下の値をそれぞれgrepコマンドを用いて表示して下さい。

fr-itaya commented 10 years ago

本日はひとまず課題1および2を、14:40開始、2.5時間で行います。 余力があれば課題3を、追加で工数見積もりした上で着手致します。 よろしくお願いいたします。

fr-itaya commented 10 years ago

課題1と2が完了しました。


■課題1
$ grep "^[[:digit:]][[:digit:]]*$" regexp.txt
12345
67890
123456789
$ grep "^[a-zA-Z]*$" regexp.txt
abcde
cdeab
]$ grep "^[0-9a-zA-Z]*$" regexp.txt
12345
67890
123456789
abcde
cdeab
test0123
$ grep '^123' regexp.txt
12345
123456789
$ grep '0$' regexp.txt
\100
012-3456-7890
■課題2
$ grep '\\' regexp.txt
\100
$ grep '^[0-9]\{5\}$' regexp.txt
12345
67890
$ grep "[e\|m]$" regexp.txt
abcde
sample@fact-real.com
fr-itaya commented 10 years ago

引き続き、課題3を17:40開始、50分で行います。よろしくお願いいたします。

fr-itaya commented 10 years ago

課題3完了しました。ご確認よろしくお願いいたします。


■課題3
$ grep -E ^[0-9]+-[0-9]+-[0-9]+$ regexp.txt
01-1234-5678
012-3456-7890
$ grep -E ^[a-zA-Z0-9_\.\-]+?@[a-zA-Z0-9_\.\-]+$ regexp.txt
sample@fact-real.com
example0110@example.co.jp
test@test
iphone@i.softbank.jp
fr-sato commented 10 years ago

確認しました、OKです。[:digit:]は初めて知りました。検索用のメタ文字使うと簡単に書けるのでそっちも調べておくとよいかなと思います。