java正则表达式-案例代码

来源:互联网 发布:国考行测技巧知乎 编辑:程序博客网 时间:2024/05/16 16:23

转载请注明出处: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("-----------------------");}}}

结果:
3
group,级别:0.结果为:abcabch--start-end:4-11
group,级别:1.结果为:abcabch--start-end:4-11
group,级别:2.结果为:abch--start-end:4-11
group,级别:3.结果为:abc--start-end:4-11
-----------------------
group,级别:0.结果为:abcabcabcabcabch--start-end:14-30
group,级别:1.结果为:abcabcabcabcabch--start-end:14-30
group,级别:2.结果为:abcabcabcabch--start-end:14-30
group,级别:3.结果为:abc--start-end:14-30
-----------------------

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


原创粉丝点击