Closed fr-sato closed 10 years ago
本日はひとまず課題1および2を、14:40開始、2.5時間で行います。 余力があれば課題3を、追加で工数見積もりした上で着手致します。 よろしくお願いいたします。
課題1と2が完了しました。
[:digit:]
:数字を表す名前付き文字クラス^
:文頭*
:前の文字の0回以上の繰り返し$
:文末 $ grep "^[[:digit:]][[:digit:]]*$" regexp.txt
12345
67890
123456789
[a-zA-Z]
:英字大文字小文字$ grep "^[a-zA-Z]*$" regexp.txt
abcde
cdeab
[0-9a-zA-Z]
:英数字]$ 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
\
:エスケープシーケンス。正規表現に使われる記号を普通の文字として扱う。$ grep '\\' regexp.txt
\100
\{n\}
:直前の文字のn個の繰り返しに一致$ grep '^[0-9]\{5\}$' regexp.txt
12345
67890
|
:パイプ。ORの意。grepで使用する際はエスケープが必要。$ grep "[e\|m]$" regexp.txt
abcde
sample@fact-real.com
引き続き、課題3を17:40開始、50分で行います。よろしくお願いいたします。
課題3完了しました。ご確認よろしくお願いいたします。
+
:直前の文字の1回以上の繰り返しに一致$ grep -E ^[0-9]+-[0-9]+-[0-9]+$ regexp.txt
01-1234-5678
012-3456-7890
?
:直前の文字の0または1回の繰り返しに一致$ 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
確認しました、OKです。[:digit:]
は初めて知りました。検索用のメタ文字使うと簡単に書けるのでそっちも調べておくとよいかなと思います。
■目的
文字列のパターンを表現する正規表現を学び、文字列の検索や置換の仕方を学びます。
■準備
課題は全てLinuxのgrepコマンドで行ってもらいます。 あらかじめ以下内容のテキストファイルを作成しておいて下さい。
■課題1
基本的な正規表現方法としてメタ文字があります。 メタ文字を用いて、テキストファイルから以下の値をそれぞれgrepコマンドを用いて表示して下さい。
■課題2
メタ文字には繰り返し、エスケープなどがあります。
それらを用いて以下の値をそれぞれgrepコマンドを用いて表示して下さい。
■課題3
実際に正規表現を使うケースとして、 電話番号やメールアドレスなど、決まったフォーマットの値を正しく入力しているかのチェックで用います。 テキストファイルから以下の値をそれぞれgrepコマンドを用いて表示して下さい。