複数行モードの意味です。グローバルが何を意味するのかは明らかですが、複数行モードには説明が必要かと思います。テキストを1行1行毎に処理していました。ような位置指定は入力バッファ全体の先頭と終端を意味し、これは行の先頭と終端と一致していました。文字通り改行の前後を意味させることができるようになりました。使わないのならば複数行モードを気にする必要はありません。さあ、検索の話は終わりました。章のタイトルを見ると、次は置換の話が始まるようです。部分は正規表現にグローバルオプションをセットすることで表現されています。これを省くと最初の一個だけを置き換えることになります。違う形式で記述されています。部分マッチの中身で置き換えられます。大きなことをやってみましょう。できる所をお見せします。ウェブショップのカタログを変換して、自分の通貨で値段を表示したいという状況を考えましょう。はい、現在のレートさえわかっていれば、電卓を使ったり概算したりはできる作業です。私たちはプログラマなのですから、テキストを正しい価格に置き換える簡単なプログラムを一発書いてしまいましょう。例として、英ポンドと米ドルの変換を考えます。write(converted);}変換レートの取得や、他の種類の通貨への対応は読者への宿題とします。ここで使ったのは、デリゲートによる置換と呼ばれる機能で、他の言語や正規表現ライブラリにある呼び出し機能に相当するものです。マッチする部分が見つかるたびにユーザーに指定された関数にキャプチャ情報を渡しているのです。その返値へとマッチ部分が置換されます。フラグがあれば、この作業を残りのマッチにも適用していきます。名前付きグループです。名前は、キャプチャした部分マッチを指す番号の別名として働きます。先ほどの例はまったく同じ正規表現のままで、こう書くこともできました。0.01*to!real(price[3]);可読性も将来の発展性もありませんが。よる選択的なキャプチャも表現されていることにご注意下さい。マッチしなかった場合は単に空文字列が返ります。さらなる機能とオプション中心となる基本機能の紹介は終わりました。追加の機能に移りましょう。時には、検索のまったく逆のことをする機能もあると便利です。正規表現をセパレータにして文字列を分割するときなどです。writeln(sentence);今度もsplitterの返すものはレンジで、つまりforeachでループできます。機能の使い方に着目しましょう。最後の句読点を区切りの一部として取り除いてしまわないための小技です。出現が前にある位置を探しています。これでやりたいことの半分はできました。使って、句読点をすべて確実に通り過ぎます。乱射がこの正規表現を見通し悪くしています。実際にそうである以上にです。いずれにせよ、先読み式の中で使える表現には特に制約はありません。後読みの中で先読み等々、なんでもできます。いっても、一般には、これらは最後の手段としてとっておいて、できるだけ控えめに使うことをお勧めします。続いて完全に別ですが完璧に同じになる話題を始めます。r));重要なのは、これで、ここまで全ての例で使ってきたAPIで動くまったく同じ正規表現オブジェクトが作られると言うことです。