[1-f] 改行文字をリテラルで指定するときは要注意
正規表現の標準的な使い方では、行頭は'^'、行末は'$'で指定します。
これらはプラットホームの違い(Windows, UNIX/Linux/BSD, Mac, etc.)
に左右されず、普遍的です。対象テキストが複数行のときも、(?m)を指
定すると各行の行頭行末をこれらの正規表現文字で指定できます(本書
5.7節)。
しかし、正規表現中に改行文字をリテラルで書かなければならないと
きには、対象テキストがどのプラットホームの上で作られたのかを認識
・意識しないと、“正しい正規表現を書いたつもりなのにマッチしない”
という現象に泣かされます。Windowsの上で作られた/生成されたテキス
トは、行末の改行文字が'\r\n'(carriage returnとnewline, 文字コー
ドで0x0d, 0x0a)です。LinuxなどUNIX系のプラットホームでは'\n'です。
Macは'\r'です。そこでもちろん、たとえばWindows上で作られたテキス
トに対し改行を'\n'で指定すると、正規表現のそのほかの部分が完全に
正しくても、ノーマッチになってしまいます。
…。でも、こんなややこしい話を記憶する苦労を背負うより、「正規
表現の中では改行文字を(なるべく)リテラルで書かない」ようにする
のがベターですね。