c# - 如何借助 C# 正则表达式从应用商店或游戏市场 url 获取唯一 ID 或包名称?

标签 c# regex

我有以下功能可以为 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;
}

Play 市场 URL 示例: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 是 play market URL)com.zhiliaoapp.musically 或者这个(如果是 IOS)474500851 并将它作为字符串返回。 但是我的函数返回整个给定的 URL。我不能抓错。错误在哪里?

最佳答案

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

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

Regex 101 链接与您的示例:https://regex101.com/r/T1K4a7/1

关于c# - 如何借助 C# 正则表达式从应用商店或游戏市场 url 获取唯一 ID 或包名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57111605/

相关文章:

Javascript正则表达式将所有字符匹配到内容内的某个点

java - 如何在空白模式之间进行选择?

c# - 为什么不能使用 = 运算符设置 DbContextOptions?

javascript - 必须包含小数点的数字的正则表达式

c# - 为什么允许在 ‘is’ 运算符左侧使用方法组,如何在实践中使用它?

c# - 如何生成不容易受到 SQL 注入(inject)攻击的字符串

php - 如何使用 preg_replace 在 php 中删除括号并将 "white space"替换为 "-"

regex - 执行错误 : from org. apache.hadoop.hive.ql.exec.DDLTask

c# - 使用矩阵放大固定点

c# - UDP Socket绑定(bind)任何IP? (通配符 - 特殊)