正则表达式是根据规则来匹配文本,你这里只给了一个文本示例,所以无法建立其比较普遍通用的规则。
以下是示例代码,可供参考。代码中对每一个你要的数据进行了一个单独匹配,也可以通过一次匹配取出全部的数据。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
Pattern zj = Pattern.compile("地震震级为(.*?级)");
Pattern sd = Pattern.compile("震源深度(.*?米)");
Pattern fw = Pattern.compile("倒塌房屋(.*?间)");
Pattern sw = Pattern.compile("(\\d+人).*?死亡");
String content = "截至2017年日3月7日,记者从前线传来消息,此次地震震级为4.7级,震源深度8千米。国道213线K774+600m处发生塌方,预计倒塌房屋200余间,地震造成6人当场死亡,23人重伤,另有7辆车被砸毁。";
Matcher matcher = zj.matcher(content);
if (matcher.find()) {
String result = matcher.group(1);
System.out.println("地震震级:" + result);
}
matcher = sd.matcher(content);
if (matcher.find()) {
String result = matcher.group(1);
System.out.println("震源深度:" + result);
}
matcher = fw.matcher(content);
if (matcher.find()) {
String result = matcher.group(1);
System.out.println("倒塌房屋:" + result);
}
matcher = sw.matcher(content);
if (matcher.find()) {
String result = matcher.group(1);
System.out.println("死亡人数:" + result);
}
}
}