java正则表达式
2017-05-01 13:06
288 查看
java.util.regex包包含三个类:
Pattern类:
Pattern对象是一个正则表达式的编译表示。Pattern类没有公共构造方法。要创建一个Pattern对象;你必须首先调用公共静态编译方法,它返回一个Pattern对象。该方法接受一个正则表达式作为它的第一个参数。
Matcher类:
Matcher对象是对输入字符串进行解释和匹配操作的引擎。与Pattern类一样,Matcher也没有公共构造方法。你需要调用Pattern对象的matcher 方法来活得一个Matcher对象。
PatternSyntaxException:
PatternSyntaxException是一个非强制异常类,它表示一个正则表达式模式中的语法错误。
实例:
(注意: 尝试将整个区域与模式匹配,当且仅当整个区域序列匹配此匹配器的模式时才返回true)
捕获组:
捕获组是把多个字符当成一个单独单元进行处理的方法,它通过对括号内的字符分组来创建。
捕获组是通过从左至右计算其开括号来编号。例如,在表达式((A)(B(C))),有四个这样的分组:
(A(A)(B(C)))
(A)
(C)
可以通过调用Matcher对象的groupCount 方法来查看表达式有多少个分组。groupCount 方法返回一个表示matcher对象当前有多少个捕获组。
还有一个特殊的组(group(0)),它总是代表整个表达式。该组不包括在groupCount 的返回值中。
实例:
运行结果:
(注意: “*”号代表字符可以不出现,也可以出现一次或多次;”?”号代表前面的字符最多只可以出现一次;”.*” 能匹配除了换行符的任意字符;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 方法
运行结果:
2. matches 和lookingAt 方法
replaceFirst 和replaceAll 方法
appendReplacement 和 appendTail 方法
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实现简单的email正则表达式判断
- Java正则表达式详解
- Java正则表达式详解
- JAVA与正则表达式(2年级之1)
- JAVA与正则表达式(一年级)(转)
- JAVA正则表达式4种常用功能
- Java正则表达式详解
- Regular Expression 正则表达式-2 (Java)
- 【转】车东:Java正则表达式详解
- Java正则表达式详解
- 关于java的正则表达式
- 调试工具系列--java 正则表达式(regular expression)调试工具
- Java正则表达式详解
- java和正则表达式
- 【转】车东:Java正则表达式详解
- JAVA正则表达式和特殊字符(没完全看懂ING)
- java 正则表达式