请问怎么用java正则表达式提取以下文本中指定的内容

2024-11-02 04:32:17
推荐回答(1个)
回答(1):

正则表达式是根据规则来匹配文本,你这里只给了一个文本示例,所以无法建立其比较普遍通用的规则。

以下是示例代码,可供参考。代码中对每一个你要的数据进行了一个单独匹配,也可以通过一次匹配取出全部的数据。

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);
        }
    }
}