* U K I Y A H O N P O *
Nel mezzo del cammin di nostra vita mi ritrovai per una selva oscura,
che la diritta via era smarrita.
リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
浮子屋商店もよろしく。

間違いだらけの正規表現講座 level 6

Table of Contents

頭から!おしりから!

だんだん難しくなってきました。第6回です。
今回は、位置指定について覚えましょう。

今まで覚えてきた「メタ文字」、正規表現特有の記号は、どれも、 1文字だったり複数文字だったりはするものの、「何かの文字」に マッチする記号でした。

今回のはちょっと毛色が異なり、「文字の位置」を表すメタ文字です。

先頭と末尾

今回の記号は2つ。

^ 先頭にマッチ
$ 末尾にマッチ

です。

これは、「先頭」「末尾」をあらわすメタ文字です。

何の先頭、末尾でしょうか?
とりあえず、まずは「行の先頭」「行の末尾」と思っていいです。

実際に例を見ないと良く分かりませんね。

「^[0-9]」
これは、行の先頭にある数字にマッチします。行の途中に数字があってもマッチしません。
「。$」
これは、行の最後が。で終わっていれば、その「。」とマッチします。
「^■.*■$」
これは、行の先頭に■があり、その後何か文字列が続いて、行の最後に■がある行全体にマッチします。

つまり、「^」「$」は文字にマッチするのではなく、「位置にマッチする」 メタ文字だと思ってください。

まるちいラインモード

さて、何故さきほど、「とりあえず」と言ったかというと。

「マルチラインモード」というのがあり、そのON/OFFによって、「^」「$」の意味が 変わるからなのです。

マルチラインモード^の意味$の意味
ON行の先頭にマッチ行の末尾にマッチ
OFF文字列全部の先頭にマッチ文字列全部の末尾にマッチ

つまり、マルチラインモードとは、「^」「$」が、「行の先頭、末尾」なのか、 「文字列全部の先頭、末尾」なのかを決めるモードです。

前回出てきた「シングルラインモード」と名前が逆のようで非常にややこしいのですが、 「シングルラインモード」と「マルチラインモード」は、逆の意味ではなく、まったく別の設定項目 だと覚えてください。

大抵のエディタでは、「マルチラインモードON」だと思います。
つまり、「^」「$」は行の先頭、末尾をあらわす記号となります。

正規表現が使える言語等では、ON/OFFが選べる場合があります。
「マルチラインモードOFF」だと、「^」「$」は、正規表現を適用する
文字列全体の先頭、末尾、という意味になります。

ちょっと脱線

今回の「^」「$」のような記号は、「ゼロ幅記号」「ゼロ幅の言明」などと 呼ばれています。

行と行のすきま、つまり

へもへも
けのけの

という文字列があったなら、

|へもへも|(改行)|けのけの|(改行)

の|の部分にマッチするから、「ゼロ幅」なのでしょうけど、 なんとなく分かりにくい表現ですね。

ご指摘などはこちらへ


URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

このページの最終更新日: 2006/09/01 05:38:30 JST (4123d)
このページのトラックバックURL: http://ukiya.sakura.ne.jp/index.php?tb_id=83fac14a2dcfe1ab36313c4f2d7bf992