レッスン10:行頭と行末

これまで、テキスト全体の一部に部分的に一致する正規表現を書いてきました。しかし、これは常に望ましいとは限りません。例えば、ログファイル内で「success」という単語に一致させたいとしましょう。「Error: unsuccessful operation」という行にも一致して欲しくありませんよね!そのため、現実世界のテキストと照合する際に誤検知が発生しないように、できるだけ具体的な正規表現を書くことがベストプラクティスです。

パターンを厳密にする1つの方法は、特別な^ハット)と$ドル記号)メタ文字を使用して、行頭と行末の両方を記述するパターンを定義することです。上記の例では、^successというパターンを使用して、「success」という単語で始まる行のみに一致させることができます。「Error: unsuccessful operation」という行には一致しません。ハットとドル記号の両方を組み合わせると、行頭と行末の両方で完全に一致するパターンを作成できます。

これは、文字を除外するためにブラケットのセット[^...]内で使用されるハットとは異なることに注意してください。正規表現を読む際には混乱を招く可能性があります。

これらの新しい特殊文字を使用して、以下の各文字列に一致させてみてください。

練習問題10:行の一致
課題 テキスト  
一致 Mission: successful To be completed
スキップ Last Mission: unsuccessful To be completed
スキップ Next Mission: successful upon capture of target To be completed
解答

式「Mission: successful」はテキスト内のどこにでも一致するため、'Mission'で始まり'successful'で終わる完全な文字列のみに一致させるには、^Mission: successful$のような行頭と行末のアンカーを使用する必要があります。

次の問題に進むには、上記の課題を解くか、解答をご覧ください。