C# コンソール アプリの次のコードがあるとします。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace stupidconsoleapp
{
class Program
{
static void Main(string[] args)
{
Regex regx = new Regex(@"^(?:https?://)?(?:[\w]+\.)(?:\.?[\w]{2,})+$");
string test = Console.ReadLine();
foreach (Match match in regx.Matches(test))
Console.WriteLine("Match: " + match.Value);
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
}
}
「http://www.cnn.com」と入力すると、このフレーズが一致したことがわかります。もう一度実行して「www.cnn.com」と指定すると、再び一致します。もう一度実行して「cnn.com」と指定すると、3 回目の一致が得られます。
しかし、「http://www.cnn.com www.cnn.com cnn.com」と入力しただけでは、一致するものはありません。
どうしてこれなの?私の正規表現は間違っていますか?