`

Java正则表达式

阅读更多

转:http://blog.csdn.net/yanghongchang_/article/details/9187557

 

不区分大小写匹配
//(?i)开启不区分大小写匹配
//(?-i)停用大小写匹配
System.out.println("AASDFSDFS".matches("(?i)[a-z]{1,}(?-i)")); //输出true
System.out.println("AASDFSDFS".matches("[a-z]{1,}"));          //输出false


匹配元字符,文字文本范围
//\Q - \E其中内容的元字符全部被忽略,转换为匹配普通字符,注意
//如果没有\E的出现那么一直到正则表达式的末端都将作为普通字符
//注意:在低于1.6.0的Java中对字符组中的\Q...\E支持不可靠,不建议
使用
 System.out.println("A?".matches("\\QA?\\E"));//输出true
//由于matches("A?")中的A?表示的意思是A可有可无,?不是普通字符所以匹配失败
System.out.println("A?".matches("A?"));//输出false


//匹配任何的图形符号,unicode字符匹配
System.out.println("○".matches("\\p{S}"));//输出true
//匹配任意小写字母
 System.out.println("a".matches("\\p{Ll}"));//输出true


//行开头和结束
//\\A匹配行开头的位置 \\Z匹配行结束的位置
System.out.println("abddascd".matches("\\Aa.*?cd\\Z"));//输出true
//^匹配行开头   $匹配行结尾 
System.out.println("abddascd".matches("^a.*?cd$"));//输出true
//注意此字符串中包含了一个换行符号,所以不能$不能匹配换行符之后的
System.out.println("abdda\r\nscd".matches("^a.*?cd$"));//输出false

模式修饰符
 //前面说过有换行符号的时候"."点是不能匹配的,那么(?s)是开启了点好通配模式,所以可以匹配
 //正则语法(?:(?s)正则表达式),本来(?s)是开启点号通配模式的,(?-s)是关闭点好通配模式的
 //为了书写方便就用了(?:(?s)正则表达式)这个语法只有括号内的内容是可以匹配的,括号外点
 //号通配模式就已经关闭了
 System.out.println("abcd\r\nefg".matches("^(?:(?s)a.*g)$"));//输出true
 //这个就是另一种写法"(?s)正则表达式(?-s)",和上面的表达式所能匹配成功的内容是一样的
 System.out.println("abcd\r\nefg".matches("^(?s)a.*g(?-s)$"));//输出true

模式作用范围
语法:(?modifier:...)
//这样(?s:a.*g)在回括号关闭后的内容就自动关闭了点号通配模式
System.out.println("abcd\r\nefg".matches("^(?s:a.*g)$"));//输出true

分组,捕获
//捕获型括号的编号是按照开括号出现的次序,从左到右计算的.括号的常见功能之一是
//从字符串中提取数据,括号中的子表达式匹配的文本称为括号匹配文本,可以通过$1$2...
//方式来进行引用,
System.out.println("<img src=\"/Uploads/images/20130617/test.jpg\" />".replaceAll("(<img.*?src=\")(.*)(\".*/>)", "$1http://127.0.0.1:8080$2$3"));
将输出:<img src="http://127.0.0.1:8080/Uploads/images/20130617/test.jpg" />


仅用于分组的括号
语法(?:....)
仅用于分组的括号(?:...)不能用来提取文本.只用于分组的括号也叫非捕获型括号
非捕获型括号的价值体现在几个方面,能使复杂的表达式更清晰,不会使维护的人对$1..$2产生
混乱,非捕获型括号是不能捕获的只能用于分组,例如下面的语句一共有3组,但是能够使用$x进行捕获
的只有两组,如果写$3会报错(?:....)不存在捕获集合中
System.out.println("<img src=\"/test.jpg\"  />".replaceAll("(<img)(?:.*?)(src.*?/>)", "$1 width='12' $2"));
将输出:<img width='12' src="/test.jpg"  />









 

Unicode子属性正则

 

Unicode字符正则

 

模式修饰字符

以上图片内容摘抄至:精通正则表达式第三版;

提示:以上正则中有一个可以解决springmvc中的正则风格URL映射的问题.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics