1. ホーム
  2. regex

正規表現におけるキャレット

2023-09-17 18:53:09

質問

具体的には、いつ ^ は、正規表現において、どのような場合に "マッチスタート" を意味し、どのような場合に "以下ではない" を意味するのでしょうか?

Wikipediaの記事などから、先頭では前者、括弧で使われると後者を意味すると判断したのですが、キャレットが先頭にある場合と括弧にある場合では、プログラムではどのように処理されるのでしょうか?例えば、どうでしょう。 ^[b-d]t$ は何にマッチするのでしょうか?

どのように解決するのですか?

^ の内部および冒頭にある場合のみ、"not the following"を意味します。 [] という意味です。 [^...] .

中に入っている場合 [] ではない を指定した場合、実際の ^ 文字を意味します。

エスケープされている場合( \^ ) の場合、それはまた、実際の ^ という文字も意味します。

それ以外の場合は、文字列や行の開始を意味します(どれになるかは言語や設定に依存します)。

つまり、簡単に言うと

  • [^abc] -a、b、cのいずれでもありません。
  • [ab^cd] -a, b, ^ (文字), c, dのいずれかです。
  • \^ -> a ^ キャラクター
  • その他の場所 -> 文字列/行の先頭です。

そこで ^[b-d]t$ は意味します。

  • 行頭
  • b/c/d文字
  • t文字
  • 行末