Java中的正则表达式

1、基本语法

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

2、Java中的应用

java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。其包括三个包:

  • Pattern:Pattern对象是正则表达式的已编译版本。其没有任何公共构造器,我们通过传递一个正则表达式参数给公共静态方法 compile 来创建一个pattern对象。
  • Matcher:Matcher是用来匹配输入字符串和创建的 pattern 对象的正则引擎对象。这个类没有任何公共构造器,我们用patten对象的matcher方法,使用输入字符串作为参数来获得一个Matcher对象。
  • PatternSyntaxException:如果正则表达式语法不正确将抛出PatternSyntaxException异常。

Pattern

这里写图片描述

Matcher

这里写图片描述
这里写图片描述

3、实验

实验描述:读取一段违章处理信息,提取出要求的信息并输出。
输出:这里写图片描述

package regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex_TextGu {

    public static void extractInfo(String content, String reg,String des){

        String find_result = null;
        // 编译正则表达式
        Pattern pattern = Pattern.compile(reg);
        // 创建Matcher对象
        Matcher matcher = pattern.matcher(content);
        // 判断是否有符合规则的子字符串
        boolean result = matcher.find();

        if (result) {
        // 读取匹配的子字符串
        find_result = matcher.group();
        }
        if (find_result != null) {
            System.out.println(des + " : " + find_result);
        }
    }

    public static void main(String[] args) {
        //编写正则表达式
        // 读取身份证号码
        String cardRegex = "(?<!\\d)[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)(?!\\d)";
        // 读取车牌号
        String licenseRegex = "[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼][A-Z]{1}[A-Z0-9]{5}(?![A-Za-z0-9])";
        // 读取时间
        String timeRegex = "(\\d{4}年)?(((0?[1-9])|10|11|12)月)?((0?[1-9])|[1-2][0-9]|3[0-1])日((0?[0-9]|1[0-9]|2[0-3])时((0?[0-9]|[1-5][0-9])分)?)?";
        // 读取地点
        String placeRegex = "(?<=在)(([\u4e00-\u9fff]*省)|([\u4e00-\u9fff]*自治区))?(([\u4e00-\u9fff]*市)|([\u4e00-\u9fff]*自治州))(([\u4e00-\u9fff]*区)|([\u4e00-\u9fff]*县))";

        String content = "重点车辆严重违法行为公示详情  决定书编号:01130018262980509354  北京市居民王二相(男,42岁,110101197608012543)于2016年10月21日21时15分,在山东省济南市高新区实施醉酒后驾驶机动车的违法行为。驾驶车辆号牌种类为小型汽车,车牌号码为京NQ016Q。依照《中华人民共和国道路交通安全法》第九十一条第二款,处以吊销驾驶证的处罚。处罚部门:北京市公安局西城交通支队联系电话:010-86531223公示日期:2016年10月30日";
        extractInfo(content, cardRegex,"身份证号");
        extractInfo(content, licenseRegex,"车牌号");
        extractInfo(content, timeRegex,"时间");
        extractInfo(content, placeRegex,"读取地点");
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值