java正则表达式
来源:互联网 发布:asynchttp post json 编辑:程序博客网 时间:2024/05/01 15:19
java.util.regex包包含三个类:
- Pattern类:
Pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个Pattern对象;你必须首先调用公共静态编译方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第一个参数。 - Matcher类:
Matcher对象是对输入字符串进行解释和匹配操作的引擎。与Pattern类一样,Matcher也没有公共构造方法。你需要调用Pattern对象的matcher 方法来活得一个Matcher对象。 - PatternSyntaxException:
PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
实例:
import java.util.regex.*;public class test_1 { public static void main(String[] args) { // TODO Auto-generated method stub String content = "I am noob" + "from runoob.com."; String pattern = ".*runoob.*"; boolean isMatch = Pattern.matches(pattern, content); System.out.println("字符串中是否包含了'runoob'子字符串?"+isMatch); }}
(注意: 尝试将整个区域与模式匹配,当且仅当整个区域序列匹配此匹配器的模式时才返回true)
捕获组:
捕获组是把多个字符当成一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的分组:
- (A(A)(B(C)))
- (A)
- (C)
可以通过调用Matcher对象的groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个表示matcher对象当前有多少个捕获组。
还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在groupCount 的返回值中。
实例:
import java.util.regex.Matcher;import java.util.regex.Pattern;public class test_1 { public static void main(String[] args) { //按指定模式在字符串查找 String line = "This order was placed for QT3000! OK?"; String pattern = "(\\D*)(\\d+)(.*)"; //创建Pattern对象 Pattern r = Pattern.compile(pattern); //现在创建Matcher对象 Matcher m = r.matcher(line); if(m.find()) { System.out.println("Found value:"+m.group(0)); System.out.println("Found value:"+m.group(1)); System.out.println("Found value:"+m.group(2)); System.out.println("Found value:"+m.group(3)); } else { System.out.println("NO MATCH"); } }}
运行结果:
(注意: “*”号代表字符可以不出现,也可以出现一次或多次;”?”号代表前面的字符最多只可以出现一次;”.*” 能匹配除了换行符的任意字符;compile 方法将给定的正则表达式编译到模式中;Matcher 方法创建匹配给定输入与此模式的匹配器,返回此模式的新匹配器;group 方法返回以前匹配操作期间由给定组捕获的输入子序列,捕获组是从1开始从左到右的索引。组零表示整个模式,因此m.group(0)等效于m.group())
(1)this is text ——this is text
(2)this\s+is\s+text——this is text
“\s+”匹配多个空白符(\S则是任意不是空白符的字符)
(3)^\d+(.\d+)?——“5”,“1.5”或“2.21”
“^”定义以什么开始;”\d+”匹配多个数字(\D匹配一个非数字字符);”?”设置括号内选项可选;”.”匹配“.”(ps:”.”也是正则表达式,匹配任何一个字符:如“a”或“1”)
Match 类个别方法实例:
- start 和end 方法
import java.util.regex.Matcher;import java.util.regex.Pattern;public class test_1 { private static final String REGEX="\\bcat\\b"; private static final String INPUT="cat cat cat cattie cat"; public static void main(String[] args) { Pattern p=Pattern.compile(REGEX); Matcher m=p.matcher(INPUT); int count=0; while(m.find()) { count++; System.out.println("Match number "+count); System.out.println("start() :"+m.start()); System.out.println("end(): "+m.end()); } }}
运行结果:
2. matches 和lookingAt 方法
这里写代码片
- replaceFirst 和replaceAll 方法
这里写代码片
- appendReplacement 和 appendTail 方法
这里写代码片
- Java 正则表达式正则
- 【正则表达式】Java正则表达式
- 正则表达式 JAVA正则表达式
- 【Java】【正则表达式】正则表达式
- Java 正则表达式详解_正则表达式
- java正则表达式!正则表达式踩坑!!!
- 正则表达式工具类,正则表达式封装,Java正则表达式
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- java和正则表达式
- java正则表达式详解!
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- Java正则表达式详解
- MJRefresh—快速集成下拉上拉刷新
- 15 个必须知道的 Chrome 开发工具技巧
- 浅用HTML编辑器ueditor
- Qt Creator快捷键
- 不同场景下 MySQL 的迁移方案
- java正则表达式
- amh面板下安装piwik
- 1.Flume概念,功能,架构
- hdu1035
- 没有规划的学习
- LeetCode Algorithm【547 】Friend Circles
- 动态规划入门(六)
- C++模拟操作系统最近最少使用算法(LRU),acm
- 数据结构与算法分析 2.14 考虑下列算法(Horner法则)