JAVA正则表达式4种常用的功能.doc
文本预览下载声明
JAVA?正则表达式4种常用的功能
下面简单的说下它的4种常用功能: 查询: 以下是代码片段:String str=abc efg ABC; String regEx=a|f; //表示a或f Pattern p=Ppile(regEx); Matcher m=p.matcher(str); boolean rs=m.find(); 如果str中有regEx,那么rs为true,否则为flase。如果想在查找时忽略大小写,则可以写成Pattern p=Ppile(regEx,Pattern.CASE_INSENSITIVE); 提取:以下是代码片段:String regEx=.+\(.+)$; String str=c:\dir1\dir2\name.txt; Pattern p=Ppile(regEx); Matcher m=p.matcher(str); boolean rs=m.find(); for(int i=1;i=m.groupCount();i++){ System.out.println(m.group(i)); } 以上的执行结果为name.txt,提取的字符串储存在m.group(i)中,其中i最大值为m.groupCount(); 分割: 以下是代码片段:String regEx=::; Pattern p=Ppile(regEx); String[] r=p.split(xd::abc::cde); 执行后,r就是{xd,abc,cde},其实分割时还有跟简单的方法: String str=xd::abc::cde; String[] r=str.split(::); 替换(删除): 以下是代码片段:String regEx=a+; //表示一个或多个a Pattern p=Ppile(regEx); Matcher m=p.matcher(aaabbced a ccdeaa); String s=m.replaceAll(A); 结果为Abbced A ccdeA 如果写成空串,既可达到删除的功能,比如: String s=m.replaceAll(); 结果为bbced ccde 附: \D 等於 [^0-9] 非数字 \s 等於 [ \t\n\x0B\f ] 空白字元 \S 等於 [^ \t\n\x0B\f ] 非空白字元 \w 等於 [a-zA-Z_0-9] 数字或是英文字 \W 等於 [^a-zA-Z_0-9] 非数字与英文字 ^ 表示每行的开头 $ 表示每行的结尾Java程序员:一刻钟精通正则表达式
想必很多人都对正则表达式都头疼。今天,我以我的认识,加上网上一些文章,希望用常人都可以理解的表达方式来和大家分享学习经验。
开篇,还是得说说 ^ 和 $ 他们是分别用来匹配字符串的开始和结束,以下分别举例说明:
^The: 开头一定要有The字符串;
of despair$: 结尾一定要有of despair 的字符串;
那么,
^abc$: 就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配。
notice: 匹配包含notice的字符串。
你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说 模式(正则表达式) 可以出现在被检验字符串的任何地方,你没有把他锁定到两边。
接着,说说 *, +,和 ?,
他们用来表示一个字符可以出现的次数或者顺序。 他们分别表示:
zero or more相当于{0,},
one or more相当于{1,},
zero or one.相当于{0,1}, 这里是一些例子:
ab*: 和ab{0,}同义,匹配以a开头,后面可以接0个或者N个b组成的字符串(a, ab, abbb, 等);
ab+: 和ab{1,}同义,同上条一样,但最少要有一个b存在 (ab, abbb, 等。);
ab?:和ab{0,1}同义,可以没有或者只有一个b;
a?b+$: 匹配以一个或者0个a再加上一个以上的b结尾的字符串。
要点, *, +,和 ?只管它前面那个字符。
你也可以在大括号里面限制字符出现的个数,比如
ab{2}: 要求a后面一定要跟两个b(一个也不能少)(abb);
ab{2,}: 要求a后面一定要有两个或者两个以上b(如abb, abbbb, 等。);
ab{3,5}: 要求a后面可以有
显示全部