正则表达式(java)
来源:互联网 发布:上瘾网络剧花絮视频 编辑:程序博客网 时间:2024/06/05 08:42
正则表达式是在Unix上开始流行起来的,主要用于字符串的匹配,查找和替换,比如参数传递的识别。在java中,java.lang.String,java.util.regex分别提供了操作正则表达式的方法。
正则表达式的基础语法以及部分特殊字符:
".":表示匹配一个字母,*"表示0个或多个,"+"表示1个或多个,"?"表示至多1个
"[abc]":匹配abc中的一个字符;[^abc]:取反,匹配不是abc的字符;[a-z]|[A-Z]:匹配a-z或者A-Z中的字符;(等同于[a-z[A-Z]]);[A-Z&&[BCD]]:匹配A-Z的字符并且这个字符属于BCD中的字符
\s:表示一个空白字符;\w:表示形成单词的字符[a-zA-z_0-9]
边界匹配:"^":表示开始;"$":表示结束;"\b":表示一个单词的边界;"^"在[]里表示取反,在[]之外则表示匹配的开始
在java.lang.String中,提供了matches(String regx)的方法匹配字符串;而在java.util.regex提供了Pattern模式和Matcher,正则表达式预编译,存放到pattern中,之后matcher匹配时便可直接匹配,match(string); 将匹配的结果存放在Matcher对象中,在速度上会比较快。
Pattern p = Pattern.compile("[a-z]{3}");
Matcher m = p.matcher(str); //匹配整个字符串str
Pattern.compile(regx)除了表达式之外,还可以带参数匹配,Pattern.compile(regx , Pattern.CASE_INSENSITIVE):表示忽略大小写按正则表达式的规格进行匹配
再写一下正则表达式分组
正则表达式的分组用小括号"()"隔开,分组可以实现抽取正则表达式匹配结果的一部分。举个例子,在一篇内容中,找出3-5个字母开头,2个数字结尾的字符串。于是可以我用"^[a-z]{3,5}\d{2}$"进行匹配,简单实现如下:
Pattern p = Pattern.compile("^[a-z]{3,5}\d{2}$");Mathcher p = p.matcher(str);while(p.find()){m.group()}
但换个要求,找出3-5个字母开头,2个数字结尾的字符串中的字母,此时我可以在while()中把匹配后的字符串作为参数再写一条正则表达式进行匹配,但这样写出来的代码量太多了,因此java中给正则表达式封装了分组,便于我们进行分组查找。比如,对于以上要求,我们可以修改正则表达式为"^([a-z]{3,5})(\d{2})$",采用分组的方式,把正则表达式分为3组,正则表达式本身为1组,[a-z]{3,5}为1组,\d{2}为1组,分组的顺序从左到右根据左括号进行计算。m.group()不传递参数可以理解为不分组匹配字符串。因此,对于以上要求我可以这样实现:
Pattern p = Pattern.compile("^([a-z]{3,5})(\d{2})$");Mathcher p = p.matcher(str);while(p.find()){ m.group(1)}
- 正则表达式(java)
- 正则表达式(Java)
- 正则表达式(java)
- Java 正则表达式正则
- 【正则表达式】Java正则表达式
- 正则表达式 JAVA正则表达式
- 【Java】【正则表达式】正则表达式
- 正则表达式学习(Java)
- Java正则表达式(转)
- Java正则表达式(一)
- java正则表达式(二)
- JAVA正则表达式(一)
- JAVA正则表达式(二)
- JAVA正则表达式(三)
- 正则表达式(java中)
- JAVA 正则表达式(获取)
- JAVA 正则表达式(练习)
- JAVA正则表达式(详细)
- 用两个栈实现队列
- springcloud(三):服务提供与调用
- Atitit 聚合搜索多个微博 attilax总结
- 数据分库分表Sharding JDBC学习
- Trie——理论知识
- 正则表达式(java)
- css3 transform animation 动画 小结
- atitit 2017年学业计划 v5 r818.xlsx
- 正则表达式速查表
- 学习SpringMVC——通过注解使用SpringMVC
- atitit 课程表终生学习专业进修表从幼儿园到养老院 v2 r818.xlsx
- 20170819WindowsPrj01_02_文件扫描器
- Docker-v17 的层级(layer)概念
- 布丰投针实验(如何将Geogebra动态文件嵌入博客中)