日頃、VB.NET で正規表現をあまり使うことがないので、単純な文字列の抽出でも「どうすんだっけ?」とググっちゃうことがあるので、たまにはちゃんとメモっておこう。
・Perl
my $t = "123-456-78";
my($key1, $key2, $key3) = ();
if ($t =~ /^(\d+)\-(\d+)\-(\d+)$/) {
($key1, $key2, $key3) = ($1, $2, $3);
}
・VB.NET
Dim t as String = "123-456-78"
Dim r As New Regex("^(\d+)\-(\d+)\-(\d+)$")
Dim m As Match = r.Match(t)
Dim key1 As Integer = m.Groups(1).Value
Dim key2 As Integer = m.Groups(2).Value
Dim key3 As Integer = m.Groups(3).Value
Perl と VB.NET のどちらも、マッチした文字列のインデックスは 1から始まる($1 = m.Groups(1))ので、そこはわかりやすいだろう。ちなみに、VB.NET の場合、m.Groups(0)にはマッチングした文字列全体が入っている。上の例で言えば "123-456-78" だ。