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