Ruby を使って 正規表現の違いを説明します。
\A
, ^
, \Z
, \z
, $
は微妙に異なります。
\A
文字列の始まり
Sample
"abc \n def \n ghi \n".gsub(/\A.*$/, '')
# => "\n def \n ghi \n"
文字列の最初から行末までマッチしました。
^
行の始まり
Sample
"abc \n def \n ghi \n".gsub(/^.*$/, '')
# => "\n\n\n"
"abc \n def \n ghi \n".gsub(/^ .*$/, '')
# => "abc \n\n\n"
行頭から行末まで、改行を除いてマッチしました。
\Z
文字列の終わり。 改行を含まない。
Sample
"abc \n def \n ghi \n".gsub(/.*\Z/, '')
# => "abc \n def \n\n"
改行を除いた最後の行にマッチしました。
\z
文字列の終わり。
Sample
"abc \n def \n ghi \n".gsub(/.*\z/, '')
# => "abc \n def \n ghi \n"
改行を含む最後の行にマッチしました。
$
行の終わり。
Sample
"abc \n def \n ghi \n".gsub(/.*$/, '')
# => "\n\n\n"
"abc \n def \n ghi \n".gsub(/ .*$/, '')
# => "abc\n\n\n"
改行を除く行末にマッチしました。
使用した環境
- Ruby 2.7.1