PowerPoint資料

Download Report

Transcript PowerPoint資料

基礎プログラミング
第13回
メニュー
• 前回の復習
– 文字列の置換
•
•
•
•
正規表現
レポートの解答
応用プログラミング
まとめ
2
前回の復習
• 文字列の置換
$a =~ s/変換前の文字列/変換後の文字列/;
– $aの中身にある「変換前の文字列」を「変換後の文字
列」に置き換える
• オプション
オプション
意味
g
対応するすべての文字列を置
換
大文字と小文字を区別しない
i
3
前回の復習(2)
• もうひとつの置換 tr
$a =~ tr/元の文字列/置き換える文字列/;
元の文字列の文字を1文字づつ順番に置き
換える.
$a =~ tr/abcd/1234/;
aを1に,bを2に,cを3に,dを4に置き換える
4
正規表現
• パターンマッチング:
– 特定の文字列がある文字列の中にあるかどうか
• 正規表現
– 特定の文字列を便利に指定する方法
正規表現は, / / で囲む
$a =~ /ライス/ は「ライス」が$aにあるかどうかを
調べる表現
– 直接文字列を書くだけでなく別の指定もできる
5
正規表現(2)
• メタ文字の利用
メタ文字 意味
^
$
\b
\B
例
文字列の先頭 /^Abc/
Abc
Abcdefg
xyz
文字列の末尾 /xyz$/
abcdxyz
/man\b/ man
単語の境界
superman
単語の境界以 /man\B/ manage
外
romanism
6
正規表現(3)
• メタ文字の利用例をチェック
– p1205.pl をダウンロードして実行
– 動きをたしかめよ.
$title[$i] =~ /\Bpar/ の
/\Bpar/ を /par\B/ に換えるとどうなる?
7
正規表現(4)
• マッチングの条件を示すメタ文字
メタ
.
意味
任意の1文字
例
/mo./
?
直前のものがあっても /colou?r/
なくてもよい
*
直前の文字の0回以上 /goo*d/
の繰り返し
+
直前の文字の1回以上 /goo+d/
の繰り返し
マッチ例
monday
mon
colour
color
good
gooooood
goood
gooooood
8
正規表現(5)
• 利用例をチェック
p1206.pl をダウンロードして実行
動きを確かめよ.
いろいろ試してみよ.
9
正規表現(6)
• つづき
メタ
意味
例
直前の文字がm /すも{6}/
回繰り返す
{m,} 直前の文字がm /いも){2},/
回以上繰り返す
{m,n} 直前の文字がm /(いも){3,5}/
回以上n回以下
繰り返す
{m}
マッチ例
すもももももも
いもいも
いもいもいも
いもいもいもいも
()で囲むとそれが繰り返しの単位になる!
10
正規表現(7)
• 利用例をチェック
p1207.pl をダウンロードして実行
動きを確かめる
11
正規表現(7)
• 指定した文字内での任意の1文字へのマッチ
( [ ]を使う )
マッチ例
メタ表現 意味
例
/[a-z]/
aとかy
[A-Z]
小文字aからzまでアル
ファベットすべて
大文字AからZすべて
/[A-Z]/
DとかX
[0-9]
数字0から9すべて
/[0-9]/
5とか9
[a-z]
[0-9a-z] 数字0から9,小文字a-z /[0-9a-z]/ cとか3
12
正規表現(8)
• 指定した文字列のどれかに一致する.
() と |を使う
メタ表現
意味
例
マッチ
(chr1|chr2) char1か /(good|bad)/ good one
bad one
char2の
どちらか
に一致
13
レポートの解答
• WWW上で
14
まとめ
• プログラムとは?
• コンピュータプログラムとは?
• 演算子
– 算術演算子,比較演算子,論理演算子
• 条件分岐
• 繰り返し
15
まとめ
• 変数
• 配列
– 配列,連想配列
• 組み込み関数
– 主にsplit
• 置換
• 正規表現
16
まとめ
• これらの個別の意味を問う
+
プログラム全体の意図,処理内容を読む
17
応用プログラミング
辞書びきプログラムの簡単な実装
• 辞書データの準備:ここから臨時にダウンロード
• 本来は...
PrepTutorEJDIC からPrepTutorEJDIC10.lzh
lhaで圧縮されているので,解凍する.
PrepTutorEJDICというフォルダの中に展開される.
PrepTutorEJDIC.txtが辞書ファイル
しかし,このままではMac形式で都合が良くない.
TeraPadでPrepTutorEJDIC.txtを読み込む.
[ファイル]→[漢字/改行コード指定保存]→
漢字コード SHIFT-JIS,改行コード CR+LF,上書き保存
18
辞書引きソフトウェアの簡単な実装
• 辞書データの構造を観察
• TeraPadで開いて,どのような構造をしているかを
確かめる.
• 半角スペース,全角スペース,タブの違いがわから
ない. →TeraPadの[表示]→[オプション]→[表示]の
「マーク/色別表示/フォント」の 中の個別の項目
を設定(チェックボックスをチェック)
• どのような構造をしているか?
19
辞書引きソフトウェアの簡単な実装
• 簡単な検索プログラムの実装
さきほど構造を調べた辞書データを検索することを考える.
kanidicsearch.pl
挑戦課題 kanidicsearch.plでは見出し語だけを正確に検
索することができない. そこで,
(1) 見出し語だけを検索できるようにせよ.
(2) 見出し語以外を検索できるようにせよ.
(3) 両方ともを検索できるようにせよ.
(4) メニューを作成して,(1)-(3)どれで検索するか指定でき
るようにせよ.
20