日頃、VB.NET で正規表現をあまり使うことがないので、単純な文字列の抽出でも「どうすんだっけ?」とググっちゃうことがあるので、たまにはちゃんとメモっておこう。
文字列 "123-456-78" を 123、456、78 の文字列に分解し、それぞれ key1、key2、key3 へ代入するのであれば、
・Perlmy $t = "123-456-78";my($key1, $key2, $key3) = ();if ($t =~ /^(\d+)\-(\d+)\-(\d+)$/) {($key1, $key2, $key3) = ($1, $2, $3);}・VB.NETDim 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).ValueDim key2 As Integer = m.Groups(2).ValueDim key3 As Integer = m.Groups(3).Value
となる。
Perl と VB.NET のどちらも、マッチした文字列のインデックスは 1から始まる($1 = m.Groups(1))ので、そこはわかりやすいだろう。ちなみに、VB.NET の場合、m.Groups(0)にはマッチングした文字列全体が入っている。上の例で言えば "123-456-78" だ。
Perl にはこういう「マッチした文字列全体」という、実際何に使うのかよくわからないものが格納される変数は無い。
ちなみに、Perl で $0 は「自分自身のスクリプト名(プログラム名)」が入っている。
電気ウナギ的○○
About Backコメント(0)
電気ウナギ的○○