みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VB.NETの正規表現を教えてください

VB.NETの正規表現でURLから特定の部分だけを
抜き取りたいのですが、どのようにしたら良いでしょうか。

下記のコードはMSDNのページで見つけたのですが、
Dim url as string="http://www.contoso.com:8080/letters/readme.html"
Dim r As New Regex("^(?<proto>\w+)://[^/]+?(?<port>:\d+)?/",RegexOptions.Compiled)
dim a as String
a = r.Match(url).Result("${proto}${port}")

とすると、aにhttp::8080 が入るというものなのですが、
これを少し変更して
url = "http://www.yahoo.co.jp/~user123456/ABCDEFG/data/text"
というURLだった場合にa=ABCDEFGを取得したいです。
ABCDEFGの前後は固定なので、正規表現の中にこの部分も明示して置きたいです。
IsMatchで
"http://www.yahoo.co.jp/~user123456/.+/data/text"
書けばTrueが返ることまでは出来たのですが、
ABCDEFGの部分を取得する方法がわからないので、
恐れ入りますが方法を教えて頂きたいです。
よろしくお願い致します。

投稿日時 - 2007-06-27 23:35:56

QNo.3121525

困ってます

質問者が選んだベストアンサー

> IsMatchで
> "​http://www.yahoo.co.jp/~user123456/.+/data/text"​
> 書けばTrueが返ることまでは出来たのですが、

ここまでできているのであれば、正規表現を
"​http://www.yahoo.co.jp/~user123456/(.+)/data/text"​
とし、IsMatchではなく
Matchの結果をマッチオブジェクトで受けて、その groups(1) を見れば
お望みのデータが入っています。

正規表現を使って文字列を検索する: .NET Tips: C#, VB.NET, Visual Studio
http://dobon.net/vb/dotnet/string/regexmatch.html

smdn: Regexクラスによる正規表現の利用
http://smdn.invisiblefulmoon.net/ikimasshoy/csharp/regularexpressions.html

投稿日時 - 2007-06-28 01:37:03

お礼

ご回答ありがとうございます。
おかげさまで無事実現することができました。
ありがとうございました。

投稿日時 - 2007-06-29 00:16:53

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

正規表現と申しますのは、ごく単純に「注文付き文字列検索・
マッチング」でしかありませんので。

マッチするかどうかが確定できた以降は文字列操作の関数、
VB6 でいうLeftやMid、Right、SQLでいうSubstringのような
関数で周囲文字列をベタで切取るか、マッチ部をゼロ文字置換
する必要があるかと思います。

.NETが良く判りませんが、
関数的には、
if (o.IsMatchMyURL("UrlString") ==True)
{
string s = o.GetSentenceFromMyURL("UrlString")
}
とかいう構成になって、

実際には class oのURL一部取得関数は、.NETなら多分
stringクラス自身が切り出しメソッドを持っているので
public string GetSentenceFromMuUrl(string s)
{
s = s.Leftなんちゃら
}
とかでとれるような気がします。

適当ですみません…

投稿日時 - 2007-06-27 23:50:56

お礼

ご回答ありがとうございます。
正規表現というとついついしりごみしてしまいます。
はやく慣れたいと思います。
ありがとうございました。

投稿日時 - 2007-06-29 00:18:52

あなたにオススメの質問