如何在 C# 正则表达式的帮助下从应用商店或播放市场 url 中获取 uniqueId 或 packageName



我有以下函数可以为Google Play市场或Apple App Store URL获取packageNameunicueId

string GetPackageNameFromUrl(string url)
{
    string res = "";
    string patternAndroid = @"^https://play.google.com/store/apps/details?id=(.+)&.+";
    Regex regexpAndroid = new Regex(patternAndroid, RegexOptions.Compiled);
    if (regexpAndroid.IsMatch(url))
    {
        res  = regexpAndroid.Matches(url).FirstOrDefault()?.ToString();
    }
    string patternIos = @"^https://apps.apple.com/ru/app/.+/id(d+)?.+";
    Regex regexpIos = new Regex(patternIos, RegexOptions.Compiled);

    if (regexpIos.IsMatch(url))
    {
        res = regexpIos.Matches(url).ToList().FirstOrDefault()?.ToString();
    }
    return res;
}

游戏市场网址示例:https://play.google.com/store/apps/details?id=com.zhiliaoapp.musically&hl=ru

IOS 应用商店 URL 的示例为:https://apps.apple.com/ru/app/%D1%8F%D0%BD%D0%B4%D0%B5%D0%BA%D1%81-%D0%BD%D0%B0%D0%B2%D0%B8%D0%B3%D0%B0%D1%82%D0%BE%D1%80-gps-%D0%BF%D1%80%D0%BE%D0%B1%D0%BA%D0%B8/id474500851?v0=WWW-EURU-ITSTOP100-FREEAPPS&l=ru&ign-mpt=uo%3D4

我需要捕获这个(如果 URL 是游戏市场 URL(com.zhiliaoapp.musically或这个(如果 IOS(474500851并将其作为字符串返回。但是我的函数返回整个给定的 URL。我不能弄错。错误在哪里?

只需一个简单的正则表达式来捕获id参数或id模式:

(id(d+)|id=([w.]+))

正则表达式 101 链接到您的示例: https://regex101.com/r/T1K4a7/1

您可以使用单个捕获组。匹配 id 和可选的等号,然后在第 1 组中捕获匹配除 &&or ?' 之外的任何字符,使用否定字符类。

id=?([^&?]+)

正则表达式演示

最新更新