DOBON.NET DOBON.NETプログラミング掲示板過去ログ

正規表現での文字列抽出

環境/言語:[環境/言語:[WinXP_Pro SP2 VB.NET2005 FrameWork2.0] ]
分類:[.NET]

はじめまして。いつも参考にさせて頂いてます。

とある文字列から、正規表現を使いデータを抽出したいと考えているのですが、方法がわかりません…。
とても大雑把で申し訳ありませんが、ご教示頂けるとありがたいです。

ex: usr/cgi/hoge/

という文字列があった場合、後ろの[hoge/]だけを抜き出したいと考えています。
そのため、正規表現で

[0-9a-zA-Z]+?/$

を使い抽出したいのですが関数が分からなくて困っています。

宜しくお願いします。
System.Text.RegularExpressions 名前空間に正規表現を扱うクラス群が存在します。
掲示板で説明するには量が膨大ですので、MSDN をご覧ください。
http://msdn2.microsoft.com/ja-jp/library/hs600312.aspx
サンプルもそろっていますし。
ありがとうございます。
ここを参考にやってみたところ、

Dim rr As New System.Text.RegularExpressions.Regex("[0-9a-zA-Z]+?/$")
Dim mm As System.Text.RegularExpressions.Match = rr.Match("usr/cgi/hoge/")
Dim ccc As System.Text.RegularExpressions.CaptureCollection
ccc = mm.Group.Captures

ここまで記述したところで、ccc = mm.Group.CapturesのGroupにCapturesが無いと怒られてしまいます。
試しにmm.Capturesとしてみたところ、かえってきた値はSystem.Text.RegularExpressions.CaptureCollection でした。

どうには値を取得できないでしょうか…。
> Dim ccc As System.Text.RegularExpressions.CaptureCollection
> ccc = mm.Group.Captures
> ここまで記述したところで、ccc = mm.Group.CapturesのGroupにCapturesが無いと怒られてしまいます。

Match クラスには Group プロパティは存在しませんし。存在するのは Groups プロパティ。
http://www.atmarkit.co.jp/fdotnet/basics/regex02/regex02_01.html
ここなんか、.NET における正規表現の扱い方が良く解説されていると思います。
例を解決するだけなら次のようになります。

Dim s As String = "usr/cgi/hoge/"
Debug.Print(Regex.Match(s, "[0-9a-zA-Z]+?/$").Value)

この例の抽出なら正規表現でなくても次のようにすることもできると思います。

Dim s As String = "usr/cgi/hoge/"
Debug.Print(s.Substring(s.TrimEnd("/"c).LastIndexOf("/"c) + 1))
返信が遅くなり大変申し訳ありません。

>>Hongliangさん
Groupは記述ミスです。GorupsにもCaptuersはありませんでした。
正規表現については正しいので、大丈夫です。

>>YASさん
有難うございます。
正規表現に拘りはないので、後者の方法で試してみたいと思います。
YASさんのご教示通り、後者の方法で難なく取得することができました。
ありがとうございました!!!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板