頭から!おしりから!
だんだん難しくなってきました。第6回です。
今回は、位置指定について覚えましょう。
今まで覚えてきた「メタ文字」、正規表現特有の記号は、どれも、
1文字だったり複数文字だったりはするものの、「何かの文字」に
マッチする記号でした。
今回のはちょっと毛色が異なり、「文字の位置」を表すメタ文字です。
先頭と末尾
今回の記号は2つ。
^ 先頭にマッチ
$ 末尾にマッチ
です。
これは、「先頭」「末尾」をあらわすメタ文字です。
何の先頭、末尾でしょうか?
とりあえず、まずは「行の先頭」「行の末尾」と思っていいです。
実際に例を見ないと良く分かりませんね。
- 「^[0-9]」
- これは、行の先頭にある数字にマッチします。行の途中に数字があってもマッチしません。
- 「。$」
- これは、行の最後が。で終わっていれば、その「。」とマッチします。
- 「^■.*■$」
- これは、行の先頭に■があり、その後何か文字列が続いて、行の最後に■がある行全体にマッチします。
つまり、「^」「$」は文字にマッチするのではなく、「位置にマッチする」
メタ文字だと思ってください。
まるちいラインモード
さて、何故さきほど、「とりあえず」と言ったかというと。
「マルチラインモード」というのがあり、そのON/OFFによって、「^」「$」の意味が
変わるからなのです。
マルチラインモード | ^の意味 | $の意味 |
ON | 行の先頭にマッチ | 行の末尾にマッチ |
OFF | 文字列全部の先頭にマッチ | 文字列全部の末尾にマッチ |
つまり、マルチラインモードとは、「^」「$」が、「行の先頭、末尾」なのか、
「文字列全部の先頭、末尾」なのかを決めるモードです。
前回出てきた「シングルラインモード」と名前が逆のようで非常にややこしいのですが、
「シングルラインモード」と「マルチラインモード」は、逆の意味ではなく、まったく別の設定項目
だと覚えてください。
大抵のエディタでは、「マルチラインモードON」だと思います。
つまり、「^」「$」は行の先頭、末尾をあらわす記号となります。
正規表現が使える言語等では、ON/OFFが選べる場合があります。
「マルチラインモードOFF」だと、「^」「$」は、正規表現を適用する
文字列全体の先頭、末尾、という意味になります。
ちょっと脱線
今回の「^」「$」のような記号は、「ゼロ幅記号」「ゼロ幅の言明」などと
呼ばれています。
行と行のすきま、つまり
へもへも
けのけの
という文字列があったなら、
|へもへも|(改行)|けのけの|(改行)
の|の部分にマッチするから、「ゼロ幅」なのでしょうけど、
なんとなく分かりにくい表現ですね。
ご指摘などはこちらへ
- まるちいラインモード→マルチラインモード -- A