`

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映射的问题.

分享到:
评论

相关推荐

    java正则表达式.zip

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它基于模式匹配的概念,能够高效地进行文本搜索、替换和解析。在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心...

    java正则表达式匹配工具

    Java正则表达式匹配工具是IT领域中一种强大的文本处理工具,它利用正则表达式(Regular Expression)的规则来查找、替换或者提取文本中的特定模式。正则表达式是一种特殊的字符序列,能够帮助程序员或者用户高效地...

    java正则表达式验证IP地址

    Java正则表达式验证IP地址 Java正则表达式验证IP地址是指使用Java语言中的正则表达式来验证IP地址是否符合标准。IP地址是指在网络通信中用来标识设备的地址,它是一种逻辑地址,通过它可以找到网络中的设备。在...

    java 正则表达式应用jar包 regex-smart.jar

    Java正则表达式是编程语言Java中的一个强大工具,它用于模式匹配、数据验证和文本检索替换。在Java中,正则表达式是通过java.util.regex包提供的接口和类来实现的。`regex-smart.jar`这个库显然是为了简化开发者在...

    使用Java正则表达式分析处理日志

    本篇将围绕“使用Java正则表达式分析处理日志”这一主题,探讨如何利用Java的正则表达式功能来提取、过滤和操作日志数据。 首先,我们需要理解正则表达式的基本概念。正则表达式(Regular Expression)是一种模式...

    JAVA正则表达式大全

    以下是对这些文档标题所涉及的Java正则表达式知识点的详细解释: 1. **正则表达式之道** 这个主题可能涵盖了正则表达式的基础概念,包括元字符、字符类、量词和分组。元字符如`.`代表任意字符,`^`表示行首,`$`...

    Java正则表达式.ppt

    Java正则表达式是一种强大的文本处理工具,广泛用于验证字符串、查找特定模式和替换文本。在Java中,正则表达式提供了简洁而灵活的方式来处理字符串,使得编程人员能够以更高效的方式实现各种文本操作。 正则表达式...

    Java 正则表达式库

    Java正则表达式库是Java开发中不可或缺的一部分,它为开发者提供了一种强大的文本匹配工具。在Java中,正则表达式(Regular Expression)是一种模式匹配语言,用于处理字符串操作,如查找、替换或提取特定模式的数据...

    Java正则表达式测试工具

    Java正则表达式测试工具是面向开发者和爱好者的一款实用程序,它可以帮助用户验证和调试他们的正则表达式。在Java编程环境中,正则表达式是一个强大的字符串处理工具,广泛用于数据验证、文本搜索和替换等任务。这款...

    常用java正则表达式

    ### 常用Java正则表达式知识点 #### 一、引言 正则表达式是一种强大的工具,用于处理文本并查找模式。多种编程语言,包括Perl、PHP、Python、JavaScript以及Java等均内置了对正则表达式的支持。本文将详细介绍Java...

Global site tag (gtag.js) - Google Analytics