java.util.regex.Pattern字符串验证

      在java.util.regex包中,包括了两个类,Pattern(模式类)和Matcher(匹配器类)。Pattern类是用来表达和陈述所要搜索模式的对象,Matcher类是真正影响搜索的对象。

      从javadoc中,我们可以知道,指定为字符串的正则表达式必须首先被编译为Pattern类的实例。然后,可将得到的模式用于创建 Matcher 对象。

 

import java.util.regex.*;

public class Test{

   public static void main(String[] args){
	/*多个匹配器可以共享一个模式类*/
	Pattern p = Pattern.compile("a*b");			
	Matcher m1 = p.matcher("aaaaaaaaaaaaaab");			
	Matcher m2 = p.matcher("aba");			
	boolean b1 = m1.matches();
	boolean b2 = m2.matches();			
	System.out.println("b1:"+b1);//true      
	System.out.println("b2:"+b2);//false
	/*matches 方法:编译表达式并在单个调用中将输入序列与其匹配*/
	boolean b = Pattern.matches("a*b", "aaaaab");
	System.out.println("b:"+b);//true
	/*
	CANON_EQ: 启用规范等价
	CASE_INSENSITIVE: 启用不区分大小写的匹配
	COMMENTS :模式中允许空白和注释
        DOTALL: 启用 dotall 模式。
        LITERAL: 启用模式的字面值分析
        MULTILINE: 启用多行模式
        UNICODE_CASE :启用 Unicode 感知的大小写折叠
        UNICODE_CASE :启用 Unicode 感知的大小写折叠
        UNIX_LINES :启用 Unix 行模式			
	*/
	Matcher m3 = p.matcher("AAAAAAAAAAAAAAB");
	boolean b3 = m3.matches();
	System.out.println("b3:"+b3);//false
	Pattern p2 = Pattern.compile("a*b",Pattern.CASE_INSENSITIVE);
	Matcher m4 = p2.matcher("AAAAAAAAAAAAAAB");
	boolean b4 = m4.matches();
	System.out.println("b4:"+b4);//true
			
		
	}

}
 


部分正则表达式的构造:

\\    反斜线字符
[abc]    a、b 或 c
[^abc]    任何字符,除了 a、b 或 c
[a-zA-Z]    a 到 z 或 A 到 Z
.    任何字符(与行结束符可能匹配也可能不匹配)
\d    数字:[0-9]
\D    非数字: [^0-9]
\s    空白字符:[ \t\n\x0B\f\r]
\S    非空白字符:[^\s]
\w    单词字符:[a-zA-Z_0-9]
\W    非单词字符:[^\w]
^    行的开头
$    行的结尾
\b    单词边界

你可能感兴趣的:(java,C++,c,正则表达式,unix)