C#、VB.NETで正規表現による検索を行う際、オプションに「Multiline」を指定してもパターンにマッチしない場合があります。
たとえばパターンに「@"^\d+$"」を指定して以下の文字列を検索すると、最終行の「789」にしかマッチしません。
これはパターンの「$」が「改行コード (\n) または入力文字列の末尾と一致する」ように動きますが、「復帰と改行コード(\r\n)の組み合わせとは一致しない」仕様のためです。
この現象は「$」の代わりに部分式「\r?$」を用いることで回避できます。
パターンに「@"^\d+\r?$"」を指定した場合、
となりますが、これでは改行コードまでマッチしてしまいました。上記例でパターンにマッチした数字のみ必要な場合は、パターンに「@"(^\d+)(\r?$)"」を指定し、マッチした文字列から「$1」にて部分文字列を抽出します。
以下はパターンにマッチした数字をシングルコートで囲うサンプルです。