七叶笔记 » java编程 » Java正则表达式匹配字符串并提取中间值的方法实例

Java正则表达式匹配字符串并提取中间值的方法实例

前言

有时候正则表达式不只是匹配一下什么数字/邮箱/身份证/日期等等,还需要匹配某一段文字,并按照既定格式提取其中的某些值.

场景一:提取SAML2报文

SAML2报文内容如下,从中提取对应的attribute name和value.

show time

控制台输出

$ attributeName->mail,attributeValue->zhengkai.blog.csdn.net$ vattributeName->cn,attributeValue->amAdmin

解析 (?<scope>.*?)是用于标识scope的方式,表示夹在中间的字符串都叫scope,可以通过matcher.group("scope")提取。所有非正则的符号都需要转义,所以你会看到很多\<或者换\"之类的\[\s\S]*? 是用来匹配任意字符,表示在前后有界定的情况下(例如夹在<xxx></xxx>中间的字符串),可以忽略那些不规则字符串的匹配。

场景2:提取sql中的表名和字段

来自github网友@ydq 给SpringBootCodeGenerator贡献的正则表达式,非常不错,值得深刻学习.

控制台输出内容:

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`userinfo`        用户信息==========`user_id`        int        用户ID`username`        varchar        用户名`addtime`        datetime        创建时间>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`USER`        null==========`ID`        varchar        主键`password`        varchar        密码`username`        varchar        用户>>>>>>>>>>>>>>>>>>>>>>>>>>>>>`tb_amount`        null==========`ID`        int        null`PRODUCT_CODE`        varchar        产品代码`GENDER`        varchar        性别(male,female)`MIN_INSURED_AGE`        int        最小投保年龄`MAX_INSURED_AGE`        int        最大投保年龄`AMOUNT`        double        基本保额`PREMIUM_RATE`        double        基本保费`YEAR_NUM`        int        缴费年限`PREMIUM_TYPE`        varchar        费率类型`INSURANCE_PERIOD`        varchar        保险期间(30年,60年)`INSURANCE_PERIOD_TYPE`        varchar        保险期间类型(如定期年0,定期岁1,终身2,以后终身对应值:200)`PAY_MODE`        varchar        交费方式

总结

到此这篇关于Java正则表达式匹配字符串并提取中间值的文章就介绍到这了,更多相关Java正则匹配字符串内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章