0

これは、「response」という名前の元の文字列です。

String response = "attributes[{"displayName":"Joe Smith","fact":"super"},{"displayName":"Kieron Kindle","fact":"this is great"}]";

文字列を解析してすべてのID値を抽出しようとしています。

String[0] = Joe Smith
String[1] = Kieron Kindle

Pattern idPattern = Pattern.compile("\"displayName\":(\\w)"); // regular expression
Matcher matcher = idPattern.matcher(response);

while(matcher.find()){
    System.out.println(matcher.group(1));
}

値を出力しようとすると、画面に何も出力されません(例外はありません) 。正規表現は左角かっことして
検索し、右角かっことしてそれらの間の単語を抽出しますか? 助けに感謝します!正規表現から文字を削除しました。これはフォーマットの間違いでした。ごめんなさい。"displayName":""(\\w)
\n

4

2 に答える 2

1

しかし、なぜ\n正規表現でを使用したのですか?それはそうあるべきです\"。また\\w、1文字だけに一致するものを使用しました。それで数量詞を使用する必要があります。そしてReluctant one

したがって、変更された正規表現は次のようになります。-

Pattern.compile("\"displayName\":\"(\\w+?)\""); // This won't consider space

ただし、Stringスペースを含めることもできるため、を使用しないでください\\w。スペースとは一致しません。

したがって、最後に、この正規表現を使用する必要があります。これは、inverted commaそれ自体を除いて、2つの逆コンマの間の任意の文字に一致します。

Pattern.compile("\"displayName\":\"([^\"]+)\"");

上記のパターンをコードに代入すると、出力は次のようになります。

"Joe Smith"
"Kieron Kindle"

これらのチュートリアルで正規表現の詳細を読むことができます:-

于 2012-11-09T18:04:38.043 に答える
0

これを使用する必要がありますregex

\"displayName\":\"(.*?)\"

(.*?)0から多くの文字に一致

または[正規表現の修正]

\"displayName\":\"([\w\s]+)\"

([\w\s]+)単語ie\w またはスペースie1\sから何度もieに一致します+

Group1今データを持っています

于 2012-11-09T18:04:32.530 に答える