2
4

More than 3 years have passed since last update.

正規表現がわからない〜デリミタってなんじゃい〜

Last updated at Posted at 2019-11-11
window.location.href.match(/\/groups\/\d+\/messages/)

はて?
正規表現を使っているのはわかるけど、ちょっとよくわからない。
調べているうちにたどり着いた デリミタ
・・・はて?
というわけで、正規表現について少し調べてみたことをまとめてみました。
初心者の初投稿なのでご意見お待ちしております。

デリミタってなんじゃい

デリミタ(Delimiter)とは
:データを項目ごとに区切る時の「区切り文字」のこと
(参考:https://wa3.i-3-i.info/word11621.html)

うーん、つまりどういうことだろう。
正規表現の両端を同じ記号で囲むことで、範囲を明示している。
(参考:http://www-creators.com/archives/5272)
つまり、例の場合は /で囲むことでその中のものが対象の範囲ですよ!と、そういうことだろうか。
アドレスを表現したいのにバックスラッシュにスラッシュに並んでて初心者にはどうも目が痛いというのが率直な感情です。
慣れるものなんでしょうか。

試しにデリミタを抜いてみる。

\/groups\/\d+\/messages

うーん。お次はバックスラッシュ。
調べているうちにたどり着いたのは、
①デリメタは /(スラッシュ)じゃなくてもいい。
②デリメタで使われた記号を使いたいときは 「エスケープ」 する必要がある。

ふむふむ。ニューワード。

エスケープ?

エスケープとは
(1) 特別な意味を無効にしてくれる文字のこと。
(2) もしくは徳栄つな意味を付与するための文字のこと。
(参考:https://wa3.i-3-i.info/word11732.html)

ここで使われる「エスケープ」は (1)特別な意味を無効にしてくれる文字のこと。
つまり「デリメタ」として使っているスラッシュから「デリメタ」の意味をとっぱらってくれる意味があるということ。
パスを表現したいので、確かに/はすべてデリメタだと判断されては困ります。

ではここで整理してみる。
仮に「デリメタ」と「エスケープ」を抜いてみるとこんな感じになった。

/groups/\d+/messages

だいぶ見やすく、それっぽくなってきました!
でもまだ見慣れない文字列がいますね。

\d+

切り出してみると見たことのある文字列です。
そう、数字を表す正規表現。
\dは半角数字を表すのでしたね。
そして+は直前のパターンを1回以上繰り返す表現でした。

つまり、\d+はなんらかの数字を表しています。

つまり /\/\ ってこういうこと。

最後の整理です。
まとめると、複雑に思えた文字列もだいぶすっきりしました。

/groups/"なんかの数字"/messages

立派なパスになりました。
デリミタとエスケープ。
最後に思うのは、パスを表現するときにデリミタにスラッシュを使う理由は何だろう...ということです。
慣習かな?

理解に誤りがございましたらご指摘いただければ大変ありがたいです。
最後までお読みいただきありがとうございました。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4