有时候正则表达式不只是匹配一下什么数字/邮箱/身份证/日期等等,还需要匹配某一段文字,并按照既定格式提取其中的某些值.
场景一:提取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正则匹配字符串内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!