`
543089122
  • 浏览: 149956 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java正则表达式及java.util.regex包的学习

    博客分类:
  • java
阅读更多
没有事做,就会堕落。。
这个世界有太多的浮躁,要耐得住诱惑;
要时刻告诫自己,认清方向,否则就可能就真的堕落了!!

闲来无事学习了java正则表达式及java.util.regex包
贴上学习的代码,虽然是入门级的东东,希望能以此方式记录下自己曾经努力过付出过。


参考正则表达式http://www.cnblogs.com/deerchao/archive/2006/08/24/zhengzhe30fengzhongjiaocheng.html
package sunfa.lx;

import java.util.Arrays;
import java.util.regex.Pattern;

/**
 * java.util.regex包负责对字符序列进行正则表达式匹配
 * Pattern负责编译
 * Matcher负责匹配
 * ---------------
 * 正则表达式:
 *1、元字符 好比char,紧紧代表一个字符;
 *2、某些字符,比如\、.、*等这样的字符在正则表达式中已经被作为标记使用了,如果你想作为非元字符使用的话就得进行转义,转义的方法是在这些字符前面加\,
 * 比如\就变成\\,.就成为\.
 *3、重复的元字符有:*,+,?,{n},{n,},{n,m},这个标记是用来修饰它前面的那个字符的。
 *4、字符类,或称为分组[],比如[0-9],[0-9A-Za-z]用-表示范围
 */
public class PatternDemo1 {
	public static void main(String[] args) {
		/**1、元字符的[]*/
		//[]属于元字符系列,所谓元字符简单的说就是字符,就是一个char,像bc就不是一个char了
//		method2(new String[]{"abt","act","adt","abct","bt"}, "a[bcd]t");
		//[]的区间,-的两头代表区间,多区间这样写,比如[0-9a-zA-Z]
//		method2(new String[]{"a1t","a3t","a01t","abt","2t"}, "a[0-9]t");
		//补集用^表示,在二元运算符中这是非的意思,尽管用了^,at还是不能通过,所以元字符[]必须有且仅有一个字符
//		method2(new String[]{"a0t","a2t","abt","at"}, "a[^0246]t");
		
		/**2、元字符的? + * */
		//?的目标是它前面的一个字符,元字符?表示它前面的一个字符出现0次或1次
//		method2(new String[]{"","a","aa","at","a1t"}, "a?");
		//元字符+的目标是它前面的一个字符,它表示它前面的那个字符出现1次或多次
//		method2(new String[]{"","a","aa","aaaaa","at","a1t"}, "a+");
		//元字符*的目标是它前面的一个字符,它表示它前面那个字符出现0次或多次,*可以说是?和+的并集
//		method2(new String[]{"","a","aa","aaaaa","at","a1t"}, "a*");
		
		/** .元字符能匹配任何字符(换行\r除外),所以用.*可以匹配换行外的任何字符串  */
//		method2(new String[]{"","a","aa","aaaaa","at","a1t","\t","\r","n"}, ".");
//		method2(new String[]{"","a","aa","aaaaa","at","a1t","\t","\r","n"}, ".*");
		
		/** 数量{n},{n,},{n,m}*/
		//{n}表示它前面的字符重复n次,并且只重复n次,重复n-1次或n+1次都是不可以的
//		method2(new String[]{"","a","aa","aaaaa","at","a1t"}, "a{2}");
		//{n,}是对{n}的扩展,表示重复n次(包含n次)以上
//		method2(new String[]{"","a","aa","aaaaa","at","a1t"}, "a{2,}");
		//{n,m}表示数目在n到m范围内,包含两头
//		method2(new String[]{"","a","aa","aaa","aaaa","aaaaa","at"}, "a{2,4}");
//		method2(new String[]{"12345-1234","12345"}, "\\d{5}-\\d{4}|\\d{5}");
		//
//		method2(new String[]{"12345-123","12345"}, "\\d{5}|\\d{5}-\\d{4}");
//		method2(new String[]{"211","12345"}, "2[0-4]\\d");
//		method2(new String[]{"1","12345"}, "[01]?\\d\\d?");
		method2(new String[]{"1","12345","12"}, "[0-9]");
		
	}
	private static void method2(String[] a,String regex){
		Pattern p = Pattern.compile(regex);
		for (int i = 0; i < a.length; i++) {
			System.out.println(a[i]+","+p.matcher(a[i]).matches());
		}
	}
	private static void method1(){
		String str = "2011-11-12";
		String pat = "\\d{4}-\\d{2}-\\d{2}";
		System.out.println(Pattern.compile(pat).matcher(str).matches());
		
		String str1 = "a1b22c333d4444e55555f";
		//按数字来分割
		String[] str1Arr = Pattern.compile("\\d+").split(str1);
		System.out.println(Arrays.toString(str1Arr));
		//数字全部替换成_
		System.out.println(Pattern.compile("\\d+").matcher(str1).replaceAll("_"));
		//去除所有的空格
		System.out.println("\\s去除所有的空格:"+Pattern.compile("\\s").matcher("aa b c d ").replaceAll(""));
		System.out.println("5-10个字符:"+Pattern.compile(".{5,10}").matcher("12345").matches());
		System.out.println("多匹配:"+Pattern.compile("\\bhi.*Lucy\\b").matcher("hi后面不远处跟着一个Lucy").matches());
		System.out.println("多匹配2:"+Pattern.compile("^\\d{5,12}$").matcher("12345678a").matches());
		
		//直接调用String类提供的方法更加的方便
		System.out.println(Arrays.toString(str1.split("\\d+")));
		System.out.println("2011-11-12".matches("\\d{4}-\\d{2}-\\d{2}"));
	}
}
2
4
分享到:
评论

相关推荐

    精通正则表达式~~~

    使用java.util.regex. 371 The Pattern.compile() Factory. 372 Pattern的matcher方法... 373 Matcher对象... 373 应用正则表达式... 375 查询匹配结果... 376 简单查找-替换... 378 高级查找-替换... 380 ...

    JAVA 正则表达式 教程

    在学习完该教程后,应该对正则表达式有了初步的了解,并能熟练地运用 java.util.regex 包中的关于正则表达式的类库,为今后学习更高级的正则表达式技术奠定良好的基础。 教程中所有的源代码都在 src 目录下,可以...

    Java正则表达式学习教程

    Java正则表达式的类在 java.util.regex 包中,包括三个类:Pattern,Matcher 和 PatternSyntaxException。 Pattern对象是正则表达式的已编译版本。他没有任何公共构造器,我们通过传递一个正则表达式参数给公共静态...

    J2EE开发全程实录

    1.2.3 java.util.regex的使用... 6 1.3 实战正则表达式... 8 第2章 程序最优化.... 14 2.1 空间与时间... 14 2.1.1 空间与时间的概念和度量... 14 2.1.2 空间与时间的背反... 15 2.1.3 以空间换时间... 15 2.2 字典...

    JAVA正则表达式--Pattern和Matcher

    java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。 它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式。 Matcher 一个Matcher对象是一个...

    [精通正则表达式(第3版)]中文版.(美)Jeffrey.E.F.Friedl-part1.rar

    这一版的更新也反映了其他语言的发展,深入讲解了Sun的java.util.regex,并特别提到了Java 1.4.2和Java 1.5/1.6之间的众多差异。 本书的内容: 各种语言和工具的功能比较 正则引擎的工作原理 优化(能节省...

    精通正则表达式 中英文

    《精通正则表达式》是系统学习正则表达式的唯一最权威著作。任何时候,任何地方,只要提到正则表达式著作,人们都会提到这本书。该书质量之高,声誉之盛,使得几乎没有人企图挑战它的地位,从而在正则表达式图书领域...

    精通正则表达式(第三版)

    这一版的更新也反映了其他语言的发展,深入讲解了Sun的java.util.regex,并特别提到了Java1.4.2和Java1.5/1.6之间的众多差异。 本书的内容: ·各种语言和工具的功能比较 ·正则引擎的工作原理 ·优化(能节省大量...

    精通正则表达式(第三版)

    如今,正则表达式已经成为众多语言及工具——Perl、PHP、Java、Python、Ruby、MysQL、VB-NET和c#(以及.NETFramework中的任何语言)——中的标准特性,依靠它,你能以之前完全不敢设想的方式进行复杂而精巧的文本...

    java 正则表达式

    正则表达式在处理文本方面用处非常大,最早像在Perl和awk语言中,提供了这种机制,Java在Java 2中也增加了正则表达式这个包java.util.regex。这个包为用户使用正则表达式,提供了易用而全面的支持。我的研究方向是...

    Mastering Regular Expressions 3 ed pdf 版 精通正则表达式(第三版)

    Furthermore, this edition has been updated throughout to reflect advances in other languages, including expanded in-depth coverage of Sun's java.util.regex package, which has emerged as the standard ...

    JAVA 正则表达式陈广佳版本(超详细)

    在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包。  可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式。正则表达式是个极端...

    eclipse正则表达式插件regex util

    eclipse正则表达式插件regex util

    正则表达式教程.pdf

    本文介绍如何使用 java.util.regex API 作为正则表达式模式匹配。虽然说这个包中可被接受的语法参数与 Perl 是相似的,但我们并不需要掌握 Perl 的语法知识。本教程将从基础开始,逐层深入到更多的高级技巧。

    精通正则表达式(第3版) 英文版

    这一版的更新也反映了其他语言的发展,深入讲解了Sun的java.util.regex,并特别提到了Java 1.4.2和Java 1.5/1.6之间的众多差异。 本书的内容: ● 各种语言和工具的功能比较 ● 正则引擎的工作原理 ● 优化(能节省...

    正则表达式 Regex Util eclipse插件

    正则表达式调试编辑器, eclipse插件Regex Util,装好后,即可从视图打开Regex Util视图了,比较好用!

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    * Summary of regular-expression constructs 正则表达式结构简介: * Construct Matches * Characters 字符: * x The character x x 字符 x * \\ The ...

    正则表达式去除中括号(符号)及里面包含的内容

    例子:颜色:粉色[10] 尺码:S[5] 去掉[ ]及内容: preg_replace(/\[.*\]/, '', ...import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) {

    正则表达式大全案例分析案例介绍

    在Java中,正则表达式的相关类都位于java.util.regex包中。 下面是一些Java中常用的正则表达式语法和使用方法: 匹配字符串模式: 使用String类的matches()方法,可以判断一个字符串是否与某个正则表达式匹配。 ...

Global site tag (gtag.js) - Google Analytics