2016-10-04 10 views
-3
に応答データから

を特定の文字列をextratする正規表現は、このことから、以下の文字列応答として

String response = "<span class="timeTempText">6:35a</span><span class="dividerText"> | </span><span class="timeTempText">59°F</span>" 

を取得私は、文字列から値を取得することができますsubStringindexOf方法を使用してのみ6:35a and 59°F. をフェッチする必要があるのですとが、それはたくさんのコードのようです。 正規表現を使用してit.Iを取得する簡単な方法はありますか? 正規表現を使用すると、どのように文字列を取得できますか?

+0

必須のリンク:[XMLまたはHTMLを正規表現で解析しない理由](https://stackoverflow.com/questions/701166/can-you-provide-some-examples-of-why-it-is -hard-to-parse-xml-and-html-a-reg)、そして[悪質な結果](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml -self-contained-tags/1732454#1732454)。 – VGR

答えて

2

はこれを試してみてください:

timeTempText">(.*?)<\/span> 


import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

final String regex = "timeTempText\">(.*?)<\\/span>"; 
final String string = "<span class="timeTempText">6:35a</span><span class="dividerText"> | </span><span class="timeTempText">59°F</span>" 
    + "asdfasdf asdfasdf timeTempText\">59°F</span> asdfasdf\n"; 

final Pattern pattern = Pattern.compile(regex); 
final Matcher matcher = pattern.matcher(string); 

while (matcher.find()) { 
    System.out.println("Full match: " + matcher.group(0)); 
    for (int i = 1; i <= matcher.groupCount(); i++) { 
     System.out.println("Group " + i + ": " + matcher.group(i)); 
    } 
} 

/* 第一キャプチャグループ(。?) 。?任意の文字に一致します(行終端文字を除く) *?数量詞 - 必要に応じて拡大可能な限り数回限りゼロと無限の時間の間のマッチ、(怠け者)

*/

キャプチャグループ1は、あなたが正規表現でそれを行うことができます値

+0

スムーズコードを提供できますか? – Psl

+0

パターンr = Pattern.compile(timeTempText ">(。*?)<\/span>); – Psl

+0

ありがとうございました – Psl

1

を持っていますが、それはです多くのコード:

String response = "<span class=\"timeTempText\">6:35a</span><span class=\"dividerText\"> | </span><span class=\"timeTempText\">59°F</span>"; 
    Matcher matcher = Pattern.compile("\"timeTempText\">(.*?)</span>").matcher(response); 
    while (matcher.find()) { 
     System.out.println(matcher.group(1)); 
    } 

説明:

  • あなたはを作成
  • Matcher
  • while(matcher.find())イディオムで一致をループします。
  • matcher.group(1)は、パターンの1番目のグループを返します。私。最初の文字と一致するテキスト()

このコードは非常に脆いことに注意してください。あなたはXPATHのほうが良いです。

関連する問題