0

「http」または「https」で始まり、特定のドメインを含む任意の URL に一致する正規表現を探しています。ドメインが「stackoverflow.com」の場合、すべてのドメインとサブドメインの一致を文字列から抽出し(.comのみ、.net、.orgなどは一致しないはずです)、リストに追加する必要がありますすべてのマッチをループします。それ、どうやったら出来るの?

これまでのところ、これが私が見つけた最善の回避策です (「somestring」という文字列を検索し、結果をリスト「myList」に追加します)。

       Regex r = new Regex(@"(?<Protocol>\w+):\/\/(?<Domain>[\w@][\w.:@]+)\/?[\w\.?=%&=\-@/$,]*");
       Match m = r.Match(somestring);
       while (m.Success) 
       {
           if ((m.Value).Contains("stackoverflow.com"))
           {
           myList.Add(m.Value);
           }
        m = m.NextMatch();
       }
4

2 に答える 2

3

つまり、URL が stackoverflow.com またはそのサブドメイン (例: m.stackoverflow.com ) のページであるかどうかをテストしたいということですか?

URLの解析はどうですか

new Uri("http://stackoverflow.com/questions/14827755/regex-which-matches-any-subdomain").Host

次に、Host プロパティが '.stackoverflow.com' で終わるか、正確に 'stackoverflow.com' に等しいかをテストします。

http://msdn.microsoft.com/en-us/library/system.uri.aspxを参照してください。

于 2013-02-12T12:17:38.483 に答える
1

これにより、何をすべきかがわかるかもしれません。

https?://(www\.)?([^.]+)\.([^.]+.)+

説明:

https?://

http または https に一致します。

(www\.)?

もしwww。存在し、一致します。

([^\s.]+)

Web サイトの名前 (1 つ以上の非ドット非空白文字で構成される) に一致します。

(\.[^\s.]+)+

1 つまたは複数のドメイン/サブドメイン (ドットと、1 つまたは複数のドット以外の非空白文字で構成される) に一致します。

于 2013-02-12T08:05:25.960 に答える