正则表达式从响应数据中提取特定字符串

时间:2016-10-04 10:44:34

标签: java regex

作为回应我正在追踪字符串

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

从此我只需要获取6:35a and 59°F. 使用subStringindexOf方法,我可以从字符串中获取值,但似乎有很多代码。 有没有简单的方法来获得它。我的意思是使用正则表达式? 使用常规表现我怎样才能得到琴弦。

2 个答案:

答案 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。