Perl と VB.NET の正規表現(一番簡単な例)[プログラミング]
(2015-01-13 20:03:22) by shinoda


日頃、VB.NET で正規表現をあまり使うことがないので、単純な文字列の抽出でも「どうすんだっけ?」とググっちゃうことがあるので、たまにはちゃんとメモっておこう。

文字列 "123-456-78" を 123、456、78 の文字列に分解し、それぞれ key1、key2、key3 へ代入するのであれば、

・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" だ。
Perl にはこういう「マッチした文字列全体」という、実際何に使うのかよくわからないものが格納される変数は無い。
ちなみに、Perl で $0 は「自分自身のスクリプト名(プログラム名)」が入っている。

コメント投稿
次の記事へ >
< 前の記事へ
TOPへ戻る

Powered by
MT4i 3.0.8