【原创】正则表达式系列
一、正则表达式提取规则的起始标识中的文本(匹配{{{开头,}}}结尾的文本)
public static void main(String[] args) {
String str = "{{{INID=0}}}{{{SubSYST=1???Nasopharynx0.9020407}}}";
Pattern p = Pattern.compile("\\{\\{\\{([^}}}]*)");// 匹配{{{开头,}}}结尾的文本
Matcher m = p.matcher(str);// 开始编译
while (m.find()) {
System.out.println(m.group(1));
}
}
输出的结果:
INID=0
SubSYST=1???Nasopharynx0.9020407
二、24小时制00~23小时格式高精度匹配
[0-2](?<!2[0-3])\d(?<!2[4-9])
分析:第一位是0-2,第2位依赖第1位,当第1位是2当时候,第二位只能取值0到3。
再举例2:4位数的,要小于等于4095,即数字范围:1000~4095。
分析:第1位,可以是1~4;第2位,依赖第1位,当第1位是4的时候,第2位只能是0;同理,第3位依赖第2位;第4位依赖第3位。所以,就有了以下代码:
"[1-4]\\d(?<!4[1-9])\\d\\d(?<!409[6-9])"
这里用的是非捕获(?<!X) X,通过零宽度的负 lookbehind 来实现的。
举例3:1到31号
[1-9](?<!3[01])\d?(?<!3[2-9])(?<![4-9]\d)

转载请注明:文章转载自:桐星豆 [https://txdou.com]
本文标题:【原创】正则表达式系列
本文地址:http://txdou.com/article114


- 注意:“桐星豆”只会以“回复”的身份出现,不会以“咨询”的身份出现在留言或评论中,凡是以“咨询”的身份出现的留言或评论均为他人盗用!
- 本站用以回复网友评论的唯一名称是“桐星豆”,除此外均无效,网友不得用此名进行相应文章的评论或回复!
- 用户言论只代表其个人观点,不代表桐星豆的观点或立场!
- 非诚勿扰,请友好如实的评论,杜绝谩骂、人格攻击等一切伤人言论,请严格遵循中华人民共和国法律法规!
- 桐星豆拥有最终解释权,如有网友违规,本站将有权删除或屏蔽违规评论,情节严重者账户加入黑名单、永久封IP并报司法部门严惩!
- 您一旦参与评论本站则默认为您已经同意以上条款,否则“非诚勿扰”,谢谢合作!