* 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
浮子屋商店もよろしく。

正規表現講座/6 のバックアップの現在との差分(No.2)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:間違いだらけの正規表現講座 level 6

#contents
#contentsx

* 頭から!おしりから! [#o42f3b2e]

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

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

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

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

* 先頭と終端 [#s12ba440]
* 先頭と末尾 [#s12ba440]

今回の記号は、「^」と「$」です。
今回の記号は2つ。

これは、「先頭」「終端」をあらわすメタ文字です。
 ^ 先頭にマッチ
 $ 末尾にマッチ

何の先頭、終端でしょうか?
それは、「マルチラインモード」のON/OFFによって意味が異なる場合が~
あるのですが、とりあえず、まずは「行の先頭」「行の終端」と思っていいです。
です。

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

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

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

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

つまり、「^」「$」自身はどんな文字ともマッチせず、そのほかの正規表現が~
ある位置を規定するわけです。
つまり、「^」「$」は文字にマッチするのではなく、「位置にマッチする」
メタ文字だと思ってください。

* まるちいラインモード [#m72ca27e]

さて、さっきから出てきた「マルチラインモード」とは何かというと、~
「^」「$」が、「行の先頭、終端」なのか、「文字列全部の先頭、終端」なのかを~
決めるモードです。
さて、何故さきほど、「とりあえず」と言ったかというと。

大抵のエディタでは、「マルチラインモードON」だと思ってください。~
つまり、「^」「$」は行の先頭、終端をあらわす記号となります。
「マルチラインモード」というのがあり、そのON/OFFによって、「^」「$」の意味が
変わるからなのです。

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

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

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

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

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

* ちょっと脱線 [#yab8df23]

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

行と行のすきま、つまり

 へもへも
 けのけの

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

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

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


* ご指摘などはこちらへ [#b35b5afb]
- まるちいラインモード→マルチラインモード -- A &new{2021-09-17 (五) 16:37:40};

#comment