作为回应我正在追踪字符串
String response = "<span class="timeTempText">6:35a</span><span class="dividerText"> | </span><span class="timeTempText">59°F</span>"
从此我只需要获取6:35a and 59°F.
使用subString
和indexOf
方法,我可以从字符串中获取值,但似乎有很多代码。
有没有简单的方法来获得它。我的意思是使用正则表达式?
使用常规表现我怎样才能得到琴弦。
答案 0 :(得分: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组的值为
答案 1 :(得分: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));
}
说明:
Pattern
Matcher
while(matcher.find())
成语循环匹配。matcher.group(1)
返回第一组模式。即第一个()
请注意,此代码非常脆弱。你最好用XPATH。