Java中的正则语法小结
来源:互联网 发布:与外国人学外语知乎 编辑:程序博客网 时间:2024/05/18 04:48
一、什么是正则
我个人理解是,正则就是一套用来处理字符串的规则。比如字符串的匹配,替换等操作都能通过正则表达式来实现。其实在我们最开始学习java的时候,就或多或少的接触到这个所谓的正则表达式了。我们熟知的String类的replaceAll(String regex, String replacement) ,split(String regex)和startsWith(String prefix)等方法就是对正则的简单应用(regex就是正则表达式)。但是当初在不了解正则的时候,我用着也没问题啊。直到有一天遇到一些特殊字符(eg. + * [ ]),然后我就翻车了。。。
二、 正则常用语法
这里仅仅简单的介绍下正则的基本语法。以后遇到实际问题时,只需要通过这些基本语法的组合应用来满足我们的需求。
单个字符表示
字符数量表示式
字符取值范围表示
逻辑表达式
三、java中正则使用
直接上代码:
package com.cydia.blog_test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Test { public static void main(String[] args){ String str = "a123cdf4*+"; System.out.println("source str = " + str); Pattern pattern = Pattern.compile("\\d+"); Matcher matcher = pattern.matcher(str); while(matcher.find()){ String ret = matcher.group(); System.out.println("match ret = " + ret); } }}
输出如下:
source str = a123cdf4*+match ret = 123match ret = 4
注:在java中 “\”要改成 “\\”,如 “\d”要写成 “\\d”。否则会报错如下:
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )
四、正则进阶
正则的匹配模式一共有三种:Greedy(贪婪),Reluctant(勉强),Possessive(独占)。
以字符串aaaa5bbbb6ccccc”为例,具体代码如下:
public class Test { public static void main(String[] args){ String str = "aaaa5bbbb6ccccc"; System.out.println("source str = " + str); //正则匹配 Pattern pattern = Pattern.compile(".{3,10}[0-9]"); Matcher matcher = pattern.matcher(str); System.out.println("=====match start====="); while(matcher.find()){ String ret = matcher.group(); System.out.println("match ret = " + ret); } System.out.println("=====match end====="); }}
输出对比如下:
match ret = bbbb6 匹配不到
原理分析:
Greedy(贪婪匹配模式):正则表达式引擎会从头一直匹配到字符串最后,当匹配为false时,通过回溯的方式,倒退找到倒数第一个匹配位置,返回匹配结果。它也是java 正则表达式默认的匹配方式。
Reluctant(勉强匹配模式):正则表达式引擎会从头匹配到符合pattern的末尾位置那个字符,然后再往后走一步,发现匹配为false, 又回溯到找到回退的最近一个匹配为true的位置,返回匹配结果。
Possessive(独占匹配模式):总是读入整个输入串,尝试一次(仅且一次)匹配成功。
阅读全文
2 0
- Java中的正则语法小结
- 正则表达式语法小结
- Java基本语法小结
- java语法小结2
- java语法小结3
- java语法小结4
- java语法小结5
- java语法基础小结
- 关于正则表达式 基本语法 及java中的应用
- java正则表达式小结
- java正则表达式语法
- JAVA正则表达式语法
- JAVA正则表达式语法
- java 正则表达式语法
- java正则表达式语法
- java 正则表达式语法
- JAVA正则表达式语法
- java 正则表达式语法
- python实现完整的求解给定列表中所有的平衡点问题,是所有的平衡点
- 关于数据序列化(4),FastJson的两个bug
- QUAKE 3源代码审查:网络模型
- sql优化
- 个人博客主页搭建随笔
- Java中的正则语法小结
- 相机的选购
- (二十一)Android内存、性能优化
- Idea集成SVN,checkout公司项目
- Redux源码拾遗,关于createStore的第三个参数
- Dependency Walker使用说明(对比软件运行与跟踪情况)
- solr的基本使用
- 海康萤石摄像机远程监控机制分析
- c++11多线程以及上锁的简单例子