簡體   English   中英

正則表達式沒有捕獲多個匹配

[英]Regex not catching multiple matches

假設我有一個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”並獲得我的第三次成功比賽。

但是,如果我只輸入“http://www.cnn.com www.cnn.com cnn.com”,我就沒有比賽了。

為什么是這樣? 我的正則表達式錯了嗎?

你的正則表達式以^開頭並以$結尾 - 這表明它應該只匹配整個字符串。 ^匹配行(或字符串)的開頭, $匹配結束 - 如果在第一個有效URL之后字符串末尾有更多文本,則它將不匹配。

如果您想要字符串的所有匹配部分,請刪除^$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM