-1

我有一个包含网页所有数据源的变量。它是一个包含大量单词、字符串、特殊字符等的大字符串。

我想通过这个变量并提取票号。这是在tickets/之后和.json之前。在以下情况下,我的列表将只有 1,即值 15。

https://company.zendesk.com/api/v2/tickets/15.json

此网页将在大量文本之间包含多个此链接。在以下情况下,我的列表将有 2 个项目,值 19 和 20。

https://company.zendesk.com/api/v2/tickets/19.json blahblahblajlkdfjfaiofjd3289239lkdj
2398283j;lkjfe89j2pefj2efljefkj
https://company.zendesk.com/api/v2/tickets/20.json blah blhahblbahlhkaldk

我将如何从这个巨大文件中的这些链接中提取票号并将它们放入列表中?

我会使用正则表达式吗?我不确定我会如何处理这个问题。

顺便说一句,这个页面没有格式。它不像是 XML 文档或任何东西。

谢谢!

4

1 回答 1

1

这样的事情应该让你开始工作

        string pattern = @"https://company.zendesk.com/api/v2/tickets/\d+.json";
        Regex regex = new Regex(pattern);
        MatchCollection mc = regex.Matches("input string here");

        foreach(Match m in mc)
        {
            Console.Write(m.Value);
        }

@ “https://company.zendesk.com/api/v2/tickets/\d+.json

注意粗体部分。@表示它是一个文字字符串,因此您不必双重转义您的\. \d是任何数字的替代。+表示前一个字符出现 1 次或多次。 *将意味着它发生0次或更多次。

这是有关如何进一步自定义模式的参考 http://msdn.microsoft.com/en-us/library/az24scfc.aspx

要仅获取票号,您可以将"\d+"括号括起来
https://company.zendesk.com/api/v2/tickets/(\d+).json"

然后您的比赛将有一个名为Groups您的票号的属性将是这些组之一

            Console.Write(m.Groups[i].Value);

此时,您可以使用许多启发式方法(包括但限于字符串长度)从票证数量中过滤出完整的匹配组,或者您可以使用另一个正则表达式。

于 2012-11-08T17:37:22.633 回答