java 正则 块转义,忽略大小写,匹配换行模式,匹配先前匹配的文本(解释正则运行机制)
来源:互联网 发布:js css filter 编辑:程序博客网 时间:2024/06/04 17:47
@author YHC
//块转义:\Q \E \Q会抑制所有的元字符的含义 //,如果漏写了\E,那么从\Q开始之后的所有字符都将当作字面文本对待 System.out.println("*'".matches("\\Q*'\\E"));//true //全部忽略大小写 System.out.println("ABc".matches("(?i)abc"));//true //仅此a忽略大小写,(?i)会在正则表达式剩余打开 //,不区分大小写,(?-i)会关闭剩余部分的匹配,他们就像一对开关 System.out.println("ABc".matches("(?i)a(?-i)bc"));//false //.代表任意字符,如果字符串中有\r\n,将不能匹配,所以我们需要开启 //匹配换行模式 对比 System.out.println("5455433535\r\n523543".matches(".*"));//false //开启换行匹配,javascript不支持 System.out.println("5455433535\r\n523543".matches("(?s).*"));//true //再次匹配先前匹配的文本,下面的08出现了三次,那么我们如何匹配这样的文本 //例如一个正则表达式也可以完成这样的功能2009-09-09 同样匹配 //为了在一个正则表达式中匹配先前匹配到的文本,我们首先必须捕获上次 //匹配的文本,这可以使用捕获分组实现,我们可以使用反向引用,在该正则 //表达式的任何地方匹配相同文本,你可以使用反斜杠后根一个单个数字(1-9) //来引用前九个分组,,而第10-99组需要用\10~-99 //注意:不能使用 \01 因为在java中这个是一个8进制的转义字符 System.out.println("2008-08-08".matches("\\d\\d(\\d\\d)-\\1-\\1"));//true System.out.println("2009-09-09".matches("\\d\\d(\\d\\d)-\\1-\\1"));//true //对以上的解释运行机制 //当正则表达式\\d\\d(\\d\\d)-\\1-\\1遇到2008-08-08的时候 //第一个\\d\\d会匹配20接着根据目标文本中达到的位置,正则引擎会引进 //分组,在捕获分组中的(\\d\\d)会匹配08,然后引擎会到达分组的右括号 //在这个点上,部分匹配08会保存到1号捕获分组中,下一个几号是连字符,它 //会按照字面进行匹配,接着就遇到反像引用,正则引擎会检查第一个捕获分组 //的内容:08,然后引擎会试着按照字面来匹配这个文本,如果该正则表达式 //是不区分大小写的,那么捕获分组也会按照这种方式进行匹配,在这里如果 //反向引用会匹配成功.下一个连字符和反向引用也会匹配成功这样就找到了 //一整个匹配:2008-08-08 //注意:捕获分组的重复匹配 //一个对改组的反向引用只会匹配该分组的最后一次捕获到的文本; //example 重复匹配 //如果同一个正则表达式遇到2008-05-28 2002-02-02,当\\d\\d(\\d\\d) //匹配到2008的时候,该分组第一次捕获到的内容:08,会被保存到一个 //(也是唯一一个)捕获分组中,接下来,连字符:-也会匹配它自身, //反向引用在试图用05匹配08的时候,匹配会失败. //由于该正则表达式中不存在其他的分支,引擎也会放弃匹配尝试, //从目标文本中的第一个0开始\\1不再存有任何文本内容,也就是 //反向引用\\1,没有内容了 //接下来继续处理2008-05-28 2002-02-02,该分组下一次会, //捕获到的内容是当\\d\\d(\\d\\d)匹配到2002的时候,它会 //将02保存起来,接下来连字符匹配自身,现在反向引用试图匹配02, //这次匹配是成功的,接着下一个连字符,反向引用,都会匹配成功, //结果是找到了2002-02-02 //注意:正则引擎的顺序 //因为正则是从前向后处理的,因此应当把捕获括号放到反向引用的前面, //正则表达式\\d\\d\\1-(\\d\\d)-\\1,\\d\\d\\1-\\1-(\\d\\d) //永远不可能匹配到任何东西,因为这里的反向引用是在捕获分组之前的 //因此它没有捕获到任何东西.
- java 正则 块转义,忽略大小写,匹配换行模式,匹配先前匹配的文本(解释正则运行机制)
- java正则表达式忽略大小写匹配
- C#正则表达式的完全匹配、部分匹配及忽略大小写的问题
- 正则匹配空格换行
- 正则表达式匹配换行
- java的正则匹配
- 实现正则匹配,匹配模式
- scala 正则匹配(模式匹配)
- Java - 正则表达式匹配模式
- 正则表达式匹配被忽略的异常
- MySQL忽略顺序的正则模糊匹配
- java正则点匹配到换行符
- 正则表达式 贪婪匹配 转义
- mongodb模糊匹配正则转义
- 正则表达式的模式匹配
- 正则表达式知识详解之匹配时忽略大小写 (java版示例)
- 正则表达式 匹配换行 的内容
- PHP正则匹配换行符
- CentOS 6.2 yum安装配置lnmp服务器(Nginx+PHP+MySQL)
- 关于流程控制的几个细节
- MyEclipse编码设置,中文乱码解决方法,UTF-8,GBK(转)
- 基础才是重中之重~老赵写的CodeTimer是代码性能测试的利器
- Linux输入输出重定向
- java 正则 块转义,忽略大小写,匹配换行模式,匹配先前匹配的文本(解释正则运行机制)
- Jni中C++和Java的参数传递
- 常用到的预编译
- Debian下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本
- 我的创业起点将会在哪里?
- 根据网页的URL获取网页信息
- 关于Xmanager Enterprise4 的两个应用远程linux桌面
- poj1753
- android 音量控制 流程梳理