簡體   English   中英

如何從C#中的正則表達式匹配分組中獲取特定值

[英]How to get specific value from Regex match grouping in C#

我正在基於正則表達式組匹配從Twitter網址獲取screen_nametweetid

(http(s)?:\/\/)(?:www.)?twitter\.com\/@?(#!\/)?(?<screenname>[a-zA-Z0-9_]{1,15})(?:\/status(?:es)?\/)?(?<tweetid>\d+)?

我可以在以下鏈接上獲得Twitter的screen_nametweetid

但是,我無法通過以下鏈接獲得正確的screen_nametweetid

我嘗試對正則表達式進行一些更改,但未能使其在上述鏈接上起作用。

這是我用來處理正則表達式的代碼。

Regex test = new Regex(@"(http(s)?:\/\/)(?:www.)?twitter\.com\/@?(#!\/)?(?<screenname>[a-zA-Z0-9_]{1,15})(?:\/status(?:es)?\/)?(?<tweetid>\d+)?", RegexOptions.Compiled | RegexOptions.IgnoreCase);
var matches = test.Matches("https://twitter.com/BeastsMovieUK/status/1042682155590197248");
Match m = null;
if (matches.Count > 0)
{
    foreach (Match match in matches)
    {
        if (match.Groups["tweetid"].Success)
        {
            m = match;
            Console.WriteLine("tweetid: {0}", m);
            break;
        }

        if (match.Groups["screenname"].Success)
        {
            m = match;
            Console.WriteLine("screenname: {0}", m);
        }
    }
}
Console.WriteLine("tweetid result: {0}", m.Groups["tweetid"]);
Console.WriteLine("screenname result: {0}", m.Groups["screenname"]);

這是我的工作示例: https : //dotnetfiddle.net/wPoCSY

如果您的兩個URL始終采用相同的格式,則可以始終對它們使用Split 這是一個工作示例:

https://dotnetfiddle.net/Dda0if

暫無
暫無

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

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