正则表达式的匹配规则 正则匹配任意字符和空格( 二 )


^ 匹配字符串的边界 , 行首$ 匹配字符串的边界 , 行尾b一个单词的边界//eg://功能:清理空白行final String regex = "^s*?n";final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);String input = "替换清理如图文本空行 , 该表达式可以拆分成三组元字符组:
regex[0] = ^表示断言一行的起始位置regex[1] = s*? 表示匹配任意多个字符匹配空白符(等价于[rntfv ])regex[2] = n 表示匹配换行符最后匹配到的结果替换为字符串空 , 即实现删除空白行量词元字符:
重复匹配 , 定位前面(文本元字符|字符元字符|分组元字符组)匹配重复的次数
? 匹配字符或者字符集合出现0次或者1次* 匹配字符或者字符集合出现0次或者n次+ 匹配字符或者字符集合出现1次或者N次{m} 匹配模式必须出现m次{m,} 匹配模式最少出现m次 , 最多无穷N次{m,n} 匹配模式最少m次 , 最多n次分组捕获元字符( ):
该分组类所有元字符组匹配看着一个完整分组作为一次匹配 , 而且查找最近的配对闭合括弧作为一个完整的子模式 , 注意该分组里面也许有N多个子分组 , 一定要追溯到所有的子分组闭合之后 , 分组是正则表达式一个重要的概念 , 但是对于我们目前仅仅学习如何拆分一个正则表达式够了 , 具体子表达式具体开文详细讲 。
条件选择元字符 或 |:
表示几个并行的条件 , 只要其中一个满足 , 就匹配成功
String regex1 = "(li|zh)ang";// regex1:既能匹配liang也可以匹配zhangString regex2 = "[li|zh]ang";// 注意和范围单个字符匹配的不同,regex2这样写可以匹配lang iang |ang zang hang 这种组合实战:根据上面的准备 , 我们来拆分开篇正则表达式: (<(w*)([^>]*)>)|((?<=>).*?(?=<))拆分过程:
//第一次拆分:var group1 = regex[0] = (<(w*)([^>]*)>); (这个我不认识(??ˇ?ˇ??))var group2 = regex[1] = | ;(这个我认识 , 分支条件嘛)var group3 = regex[2] = ((?<=>).*?(?=<));(这个我不认识(??ˇ?ˇ??))//第二次拆分:继续拆分group1元字符组:var group1_child_1 = group1[0] = < (这个我认识哦 , 原来你是匹配字符<)var group1_child_2 = group1[1] = (w*) (原来你是配置任意大小写字母、数字 , 想想 , 哦原来作者这里是匹配html元素标签啊 , 比如div、img)var group1_child_3 = group1[2] = ([^>]*)(匹配直到出现>前的任意字符)var group1_child_4 = group1[3] = >(匹配字符>)组合起来改组就是匹配一个html元素的开始带属性的标签 , 比如:<div id="header"> , MD , 原来如此的简单....继续分解 , 知道拆分成一个一个有意义的子模式 , 按规则组织匹配字符 , 让后我们就能读懂该正则表达式的终极奥义 。总结:关键字:零宽断言 元字符 分组 拆
有了这几个术语的概念 , 你可以把一个正则表达式庖丁解牛分成一个一个基础的元字符 , 弄明白他的意义 , 中间有不明白的元字符定义 , 可以查查资料 , 那么恭喜你 , 正则表达式你花5分钟就入门了 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: