-1

Web ページのすべてのデータ ソースを持つ変数があります。多くの単語、文字列、特殊文字などを含む大きな文字列です。

この変数を調べて、チケット番号を抽出したいと思います。これは、チケット/の後、.jsonの前です。次の場合、私のリストは 1 だけで、値は 15 です。

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

この Web ページには、多数のテキストの間にこのリンクが複数含まれています。次の例では、私のリストには値 19 と 20 の 2 つの項目があります。

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あなたのチケット番号と呼ばれるプロパティがあり、それらのグループの1つになります

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

その時点で、文字列の長さを含むがそれに限定された多くのヒューリスティックを使用して、チケット番号のグループから完全一致グループを除外するか、別の正規表現を使用できます。

于 2012-11-08T17:37:22.633 に答える