正規表現

正規表現で「$(ドル)」は文末・行末 | $1,$2はキャプチャで使用

正規表現でドルは文末

「$(ドル)」は文末・行末

正規表現において「$(ドル)」は文末・行末を表します。正規表現の最後に配置して最後に一致するパターンへ絞り込みます。ただし環境によっては全文の最後(改行は文の一部という扱い)になるケースもあります。

// 文末に「リザードン」が書いてあるパターンのみヒットさせたい
.*リザードン$

// 検索対象
リザードンウツドンサイドンヤドン // ヒットせず
ウツドンサイドンヤドンリザードン // ヒット
サイドンヤドンリザードンウツドン // ヒットせず
ヤドンリザードンウツドンサイドン // ヒットせず

「^(ハット,キャレット)」は文頭・行頭

正規表現において「^(ハット,キャレット)」は文頭・行頭を表します。正規表現の最初に配置して行の頭から一致するパターンに絞り込みます。

// 文頭に「リザードン」が書いてあるパターンのみヒットさせたい
^リザードン.*

// 検索対象
リザードンウツドンサイドンヤドン // ヒット
ウツドンサイドンヤドンリザードン // ヒットせず
サイドンヤドンリザードンウツドン // ヒットせず
ヤドンリザードンウツドンサイドン // ヒットせず

「^」と「$」は同時に使われることが多い

正規表現で指定する際「^」と「$」は同時に使われることが多いです。行頭や行末に意図しない文字が含まれていた場合に除外できるのが強みです。

// 日付のみ入っている行を取得したい
^\d{4}\/\d{2}\/\d{2}$

// 検索対象
2024/02/01  // ヒット
2024/02/02(火) //ヒットせず
2024/02/03  // ヒット
西暦2024/02/04 // ヒットせず

「$1,$2…」はキャプチャされた文字列

正規表現で置換を行う際、置換後の欄に「$1」や「$2」といれるとキャプチャした文字列を前方から「$1」「$2」「$3」として取得してきてくれます。キャプチャするには正規表現の中にて「( )」でくくればOKです。

// 置換前の文字列
ピカチュウ カイリュー ヤドラン

// 正規表現
ピカ(チュウ) (カイ)リュー (ヤド)ラン
// 正規表現で置換したい形($1=チュウ、$2=カイ、$3=ヤド が入っている想定)
ライ$1 $2ロス $3ン

// 置換後の文字列
ライチュウ カイロス ヤドン

より実用的な例だと次のとおりになります。

// 置換前の文字列
<title>正規表現とは</title>
<title>プログラミング言語とは</title>

// 正規表現
<title>(.+)とは</title>  // (.+)は今回「正規表現」が入る
// 正規表現で置換したい形
<title>$1の一覧</title>  // ()の中身である「正規表現」が$1で表される

// 置換後の文字列
<title>正規表現の一覧</title>
<title>プログラミング言語の一覧</title>

「$」のエスケープは「\$」

たんに文字としての「$」を使いたい場合には、「\(バックスラッシュ)」を用いてエスケープする必要があります。「$」はそのまま使うと文末を表してしまうため「これは文末ではないですよ〜」と正規表現に伝える際は「\$」と表現します。

// 「$」をエスケープする
\$\d*

// 検索対象
$100
$123456789