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