转载请注明出处:http://blog.csdn.net/droyon/article/details/8635735
jdk在线api:http://docs.oracle.com/javase/7/docs/api/index.html,选择java.utils.regex,可以查看Pattern类的介绍。
.:任意字符
[abc]:含有a,b,c的任意一个字符
[^abc]:除了a,b,c之外的任意字符
[a-zA-Z]:a到z,A到Z的任意字符
[abc[hij]]:a,b,c,h,i,j中的任意字符
[a-z&&hij]:匹配h,i,j中的任何一个交集
\s:空白符,空格,tab键,换行,换页,回车
\S:非空白符
\d:数字0到9
\D:非数字
\w:词字符[a-zA-Z0-9]
\W:非词字符
^:一行的开始
&:一行的结束
\b:词的边界
\B:非词的边界
\G:前一个匹配的结束
代码下载
PatternTest.java//字符串匹配正则表达式
public class PatternTest { public static void main(String args[]){ for(String s:new String[]{"HelloWorld","[a-zA-Z]elloWorld","[a-zA-Z]+" ,"[A-Z]?elloWorld","Hello.*"}){ System.out.println("是否匹配:"+"HelloWorld".matches(s)); } } }结果:
是否匹配:true
是否匹配:true
是否匹配:true
是否匹配:true
是否匹配:true
PatternMatcher.java//Pattern、Matcher类使用 abc+以及(abc)+的区别,+代表一个或多个 ?代表存在一个或一个没有
import java.util.regex.Matcher; import java.util.regex.Pattern; public class PatternMatcher { public static void main(String args[]){ String s = "abcabcabcabchijabcccccc"; String[] match = new String[]{"abc+","(abc)+"}; for(String m:match){ System.out.println("regex args is:"+m); Pattern pattern = Pattern.compile(m); Matcher matcher = pattern.matcher(s); while(matcher.find()){ System.out.println("匹配到内容:"+matcher.group()+"在字符串的:" +matcher.start()+"-"+matcher.end()); } System.out.println("---------------------------"); } } }结果:
regex args is:abc+
匹配到内容:abc在字符串的:0-3
匹配到内容:abc在字符串的:3-6
匹配到内容:abc在字符串的:6-9
匹配到内容:abc在字符串的:9-12
匹配到内容:abcccccc在字符串的:15-23
---------------------------
regex args is:(abc)+
匹配到内容:abcabcabcabc在字符串的:0-12
匹配到内容:abc在字符串的:15-18
---------------------------
PatternGroup.java// 正则表达式 A(B(CD))E,Matcher.groupCount为正则表达式的级别。那么,Matcher.group(0) = ABCDE ,Matcher.group(1) = BCD,Matcher.group(2) = CD.Matcher.start代表开始匹配的位置,Matcher.end代表结束匹配的位置。
import java.util.regex.Matcher; import java.util.regex.Pattern; public class PatternGroup { public static void main(String args[]){ String s = "abchabcabchabdabcabcabcabcabch"; Pattern pattern = Pattern.compile("(abc((abc)+h))"); Matcher matcher = pattern.matcher(s); System.out.println(matcher.groupCount()); while(matcher.find()){ for(int j=0;j<=matcher.groupCount();j++){ System.out.println("group,级别:"+j+".结果为:"+matcher.group(j)+"--start-end:"+matcher.start()+"-"+matcher.end()); } System.out.println("-----------------------"); } } }
PatternFlag.java//常用flag有:Pattern.CASE_INSENSITIVE,Pattern.MULTILINE,Pattern.DOTALL
import java.util.regex.Matcher; import java.util.regex.Pattern; public class PatternFlag { public static void main(String args[]){ String s = "Java is good language!\n" +"JAVA is good one you choose.\n" +"java,we all use it."; Pattern pattern = Pattern.compile("^java",Pattern.CASE_INSENSITIVE|Pattern.MULTILINE); Matcher matcher = pattern.matcher(s); while(matcher.find()){ System.out.println("匹配结果:"+matcher.group()+".start-end:"+matcher.start()+"-"+matcher.end()); } } }
匹配结果:Java.start-end:0-4
匹配结果:JAVA.start-end:23-27
匹配结果:java.start-end:52-56
PatternSplit.java//split的用法
import java.util.Arrays; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PatternSplit { public static void main(String args[]){ String s = "Java is good language!\n" +"JAVA is good one you choose.\n" +"java,we all use it."; Pattern pattern = Pattern.compile("^java",Pattern.CASE_INSENSITIVE|Pattern.MULTILINE); Matcher matcher = pattern.matcher(s); // while(matcher.find()){ // System.out.println("匹配结果:"+matcher.group()+".start-end:"+matcher.start()+"-"+matcher.end()); // } System.out.println(Arrays.toString(pattern.split(s))); System.out.println("数组长度为:"+pattern.split(s).length); for(String arr:pattern.split(s)){ System.out.println("数组内容为:"+arr); } } }
[, is good language!
, is good one you choose.
, ,we all use it.]
数组长度为:4
数组内容为:
数组内容为: is good language!
数组内容为: is good one you choose.
数组内容为:,we all use it.
PatternReplace.java//replace的用法
import java.util.regex.Matcher; import java.util.regex.Pattern; public class PatternReplace { public static void main(String args[]){ String s = "***java is a good language!"; System.out.println("字符串:"+s); String s1 = s.replaceAll(" {1,}", "-"); System.out.println("替换空格为-:"+s1); String s2 = s.replaceAll("(?m)^\\*{1,}", ""); System.out.println("替换字符串开头的*:"+s2); Pattern pattern = Pattern.compile("[aeiou]"); Matcher matcher = pattern.matcher(s); StringBuffer sb = new StringBuffer(); while(matcher.find()){ matcher.appendReplacement(sb, matcher.group().toUpperCase()); } System.out.println("替换字符串为:"+sb.toString()); } }
字符串:***java is a good language!
替换空格为-:***java-is-a-good-language!
替换字符串开头的*:java is a good language!
替换字符串为:***jAvA Is A gOOd lAngUAgE