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

截至2017年日3月7日,记者从前线传来消息,此次地震震级为4.7级,震源深度8千米。国道213线K774+600m处发生塌方,预计倒塌房屋200余间,地震造成6人当场死... 截至2017年日3月7日,记者从前线传来消息,此次地震震级为4.7级,震源深度8千米。国道213线K774+600m处发生塌方,预计倒塌房屋200余间,地震造成6人当场死亡,23人重伤,另有7辆车被砸毁。

请问怎么从以上文本中提取 地震震级,震源深度,倒塌房屋数量,死亡人数相对应的数据呀
可以用正则表达式实现么
展开
 我来答
貌似風輕
2018-05-29 · TA获得超过7280个赞
知道大有可为答主
回答量:1672
采纳率:94%
帮助的人:685万
展开全部

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

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

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

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式