java正则表达式-案例代码

转载请注明出处: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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 《正则表达式必知必会修订版》是一本介绍正则表达式的经典教程,其通过简单易懂的语言和大量实例来讲解正则表达式的基本语法、常用元字符、匹配原理等知识点,适合初学者学习。而此次修订版则在原基础上进行了一定的更新和完善,包括增加了一些新的实例和案例,更加详细地解释了一些重要的概念和技巧,使得读者可以更加准确地掌握正则表达式的使用方法,并且更好地应用到实际的编程工作中。 总的来说,《正则表达式必知必会修订版》是一本非常好的学习资料,无论是从基础入门到深入掌握,都能够满足读者的需求。对于初学者来说,可以通过该书快速掌握正则表达式的基本语法,然后结合实例进行练习,掌握正则表达式的初步应用。对于进阶学习者,可以从更深入的角度去学习正则表达式的应用,探索更加高级的技巧和应用场景,提高编程能力。 总之,《正则表达式必知必会修订版》是一本非常优秀的正则表达式入门教程,它具有简单易懂,知识点全面,实用性强的特点,是广大编程爱好者学习正则表达式的一本不可多得的好书。 ### 回答2: 正则表达式必知必会修订版pdf 是一本非常好的正则表达式教材,适合初学者和进阶者。首先,本书的语言简洁明了,通俗易懂,作者使用了大量实例和练习,帮助读者理解和掌握正则表达式的基础知识和进阶技巧。其次,本书的内容全面、系统,覆盖了正则表达式的所有方面,包括元字符、字符集、量词、分组、反向引用、零宽度断言等等。读者可以根据自己的需求和程度选择阅读,打好基础,完善技能。最后,本书的价值在于它能够让读者真正理解和应用正则表达式,提升工作效率。正则表达式是一种强大的文本匹配工具,它能够对文本进行高效率、精准匹配,解决企业中的一些文本处理难题,如批量修改、提取数据等。如果您是一名程序员或数据分析师,正则表达式必知必会修订版pdf一定是您的必备书籍之一,它能帮助您提升工作效率,打造更优秀的代码和应用。 ### 回答3: 正则表达式必知必会修订版pdf是一本对于正则表达式入门的学习者来讲十分有用的书籍,它详细地介绍了正则表达式的基础知识、语法和常用的应用方式。 在该书中,作者通过生动的例子和详细的讲解,引导读者逐步学习掌握正则表达式的语法和编写方式,让读者具备在处理文本数据时运用正则表达式的能力,并且能够有效地解决实际应用中遇到的问题。 此外,该书也涵盖了常用的正则表达式引擎和语言,比如Perl、JavaJavaScript等,并对常见的正则表达式应用进行了讲解,比如在表单验证、数据清洗和日志分析等领域中的应用。 总之,正则表达式必知必会修订版pdf对于初学者来说是一本非常实用的工具书,它不仅可以帮助人们学习和掌握正则表达式的基础知识,也可以帮助人们在实际应用中更加有效地运用正则表达式来提高工作效率和解决实际问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hailushijie

您的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值