このコンテキストでの正規表現の使用を誤解している場合は、事前に謝罪してください。
文字列から繰り返しフィールドを取得したいと思います。問題の文字列は次のようになります -
TrendsJSONImpl{asOf=Fri Mar 08 00:04:26 GMT 2013, trendAt=Fri Mar 08 00:04:26 GMT 2013, >trends=[TrendJSONImpl{name='#TheBiggestLies', url='URL', query=' %23TheBiggestLies'}, TrendJSONImpl{name='#ICanHonestlySay', >url='URL', query='%23ICanHonestlySay'}, >TrendJSONImpl{name='#EuTenhoUmaQuedaPor', url='URL', query='%23EuTenhoUmaQuedaPor '}, >TrendJSONImpl{name='#CitePessoasExclusivamenteSuas', url='URL', query='%23CitePessoasExclusivamenteSuas'},
この文字列から、フィールド「名前」を取得してリストに追加したいと思います。この文字列は、Twitter のトレンド トピックを表し、それを生成するメソッドが呼び出されるたびに変更される可能性があります。
理想的な出力は次のようになります-
#TheBiggestLies
#ICanHonestlySay
#CitePessoasExclusivamenteSuas
ここの以前の記事に従って、次のコードで名前フィールドを抽出しようとしました-
UI.model = new DefaultListModel();
String trendsInfo = //FUNCTIONWHICHRETRIEVESSTRING
Matcher m = Pattern.compile("{name=").matcher(trendsInfo);
Pattern p = Pattern.compile(
"{name='(.*),",
Pattern.DOTALL);
Matcher matcher = p.matcher(trendsInfo);
while (matcher.find()) {
for (int i = 0; i < 20; i++) {
String output = m.group(i);
UI.model.addElement(output);
System.out.println(m.group(i));
}
}
残念ながら、これは Illegal Repetition 例外を返しています。同じフィールドの複数のクエリを処理する方法がわかりません。この問題について何か助けていただければ幸いです。
御時間ありがとうございます!