0

これを含むテキストがあります:

  "id": "100001470360923", 
  "name": "Đặng Minh Khiêm", 
  "first_name": "Đặng Minh", 
  "last_name": "Khiêm", 
  "link": "https://www.facebook.com/mrkhiem97", 
  "username": "mrkhiem97", 
  "birthday": "10/09/1992", 
  "location": {
          "id": "108458769184495", 
          "name": "Ho Chi Minh City, Vietnam"
      }, 

C# で正規表現を使用して 2 つの文字列を取得しようとしています: "id": "100001470360923" "name": "Đặng Minh Khiêm"

        String patternID = "\"id\":\"\\d+\"";
        String patternName = "\"name\":\"[\\w]+\"";
        Match matchID = Regex.Match(data, patternID);
        Match matchName = Regex.Match(data, patternName);

ただし、パターン名では機能しません

パターンの使い方がわかりません。誰かが私にこれのパターンを教えてもらえますか?

4

2 に答える 2

1

名前に単語以外の文字 (スペースなど) が含まれているため、正規表現が機能していません。を使用して、引用符ではないものと一致させることができます[^\"]+。完全な例を次に示します。

String data = "\"id\": \"100001470360923\", \"name\": \"Ð?ng Minh Khiêm\", \"first_name\": \"Ð?ng Minh\", \"last_name\": \"Khiêm\", \"link\": \"https://www.facebook.com/mrkhiem97\", \"username\": \"mrkhiem97\", \"birthday\": \"10/09/1992\", \"location\": { \"id\": \"108458769184495\", \"name\": \"Ho Chi Minh City, Vietnam\" },";
String patternID = "\"id\": \"[^\\\"]+\"";
String patternName = "\"name\": \"[^\\\"]+\"";
Match matchID = Regex.Match(data, patternID);
Match matchName = Regex.Match(data, patternName);

Console.WriteLine(matchID.Value);
Console.WriteLine(matchName.Value);

これは以下を出力します:

"id": "100001470360923"
"name": "Ð?ng Minh Khiêm"

もちろん、これが他の形式である場合 (JSON と非常によく似ています)、その形式を解析することを目的としたライブラリを使用する方が簡単です。DataContractJsonSerializer、または同様のクラスを見てください。

于 2012-07-08T04:53:01.140 に答える
0

これを試してください:

var pattern = "\"id\":\\s*\"(?<id>[^\"]*)\"\\s*,\\s*\"name\"\\s*:\\s*\"(?<name>[^\"]*)\"";
var match = Regex.Match(strInput, pattern);
var id = match.Groups["id"].Value;
var name = match.Groups["name"].Value;
于 2012-07-08T05:09:54.633 に答える