Java -- 正则表达式

1. 正则表达式

 

2. 使用正则表达式

可以直接使用String提供的方法 也 可以使用Pattern 和 Matcher类,Pattern对象是正则表达式编译后在内存中的表示形式,因此正则表达式必须先编译为Pattern对象(可以多次利用),然后利用该对象创建对应的Matcher对象,执行匹配所涉及的状态保留在Matcher对象中,多个Matcher对象可共用一个Pattern.

例一:

public class Main {		
	public static void main(String[] args) throws IOException {
		
	String ip = "192-0-0-1";
	System.out.println( ip.matches("\\d*-\\d*-\\d*-\\d*") ); //直接用String
	System.out.println(ip.replaceFirst("\\d*", "168"));
	System.out.println(ip.replaceFirst("\\d?", "168"));
	String [] str = ip.split("-");
	for( String temp : str )	
		System.out.print(temp + "  ");
	System.out.println();
	
	Pattern p = Pattern.compile("\\d*");
	Matcher m = p.matcher("192");
	System.out.println( m.matches() );
	
	System.out.println( Pattern.matches("\\d*-\\d*-\\d*-\\d*", "192-168-1-1") ); //直接使用Pattern静态方法,不可复用
	}	
}

例二:

public class Main {		
	public static void main(String[] args) throws IOException {
		
	Matcher m = Pattern.compile("\\w+").matcher("hello java");
	while(m.find())
	{
		System.out.println(m.group() + " from " + m.start() + " to " + m.end());
	}
	
	int i=0;
	while(m.find(i))
	{
		System.out.print(m.group() + "\t");
		i++;
	}	
	}	
}

输出结果:

hello from 0 to 5
java from 6 to 10
hello   ello    llo     lo      o       java    java    ava     va      a

例三:

public class Main {		
	public static void main(String[] args) throws IOException {
		
		String [] mails =
			{
				"12@163.com",
				"xiangjie55@qq.com",
				"xj626852095@qq.com",
				"xiangjie55@163.com",
				"12@163.com"
			};
		String mailRegEx = "\\w{5,20}@\\w+\\.(com|org|cn|net)";
		Pattern mailPattern = Pattern.compile(mailRegEx);
		Matcher matcher = null;
		for( String mail : mails )
		{
			if( matcher==null )
			{
				matcher = mailPattern.matcher(mail);
			}
			else
			{
				matcher.reset(mail);
			}
			
			if( matcher.matches() )
			{
				System.out.println(mail + " format is OK");				
			}
			else
			{
				System.out.println(mail + " format is not OK");	
			}			
		}
	}	
}

输出结果:

12@163.com format is not OK
xiangjie55@qq.com format is OK
xj626852095@qq.com format is OK
xiangjie55@163.com format is OK
12@163.com format is not OK


 

posted @ 2013-10-31 13:36  今晚打酱油_  阅读(155)  评论(0编辑  收藏  举报