加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

2.正则表达式-完结

发布时间:2020-12-14 06:12:46 所属栏目:百科 来源:网络整理
导读:前言: 内容包括正则表达式的子表达式,回溯引用,前后查找,嵌入条件,以及例子的拆分介绍。如果文字描述有问题可以评论指出,如果概念很模糊,可以关注微信公众号,JAVA知识总结与分享。 子表达式 介绍: 把一个表达式划分为多个子表达式,每个都是一个独立

前言:内容包括正则表达式的子表达式,回溯引用,前后查找,嵌入条件,以及例子的拆分介绍。如果文字描述有问题可以评论指出,如果概念很模糊,可以关注微信公众号,JAVA知识总结与分享。

子表达式

介绍:把一个表达式划分为多个子表达式,每个都是一个独立的元素,相关元字符()

正则:d{1,3}.d{1,3}

?

注:这只是一个匹配文本中ip的正则,对于,666.666.666.666这种非ip的数值,也是可以匹配到的。不过我们这里只是提取文本中的ip。要匹配正确的ip,可以自己尝试一下。

?

?

解析:d 代表数字,出现1到3次,这个重复的表达式写了四次,但是毫无疑问,这个是能匹配到文本中的正确的ip的。但是这个看起来比较麻烦,这种情况其实我们就可以使用子表达式

利用子表达式:(d{1,3}.){3}d{1,3}

利用子表达式正则解析:

(d{1,3}.){3}表示这个(d{1,3}.)重复三次,对应ip地址的前三位地址,d{1,3}表示匹配ip地址的最后一组数字

?

回溯引用

?

定义:后半部分引用前半部分中定义的子表达式

正则表达式 :<h[1-6]>.*?</h[1-6]>

解析:?[1-6]建立了一个数字组,<h[1-6]>表示<h1>,<h2>......<h6>,

.*?这里用了懒惰型字符,在页面中,正常来说,</h*>后面是有一个换行符的。元字符.不匹配换行符,如果没有换行符,贪婪型可能会从<h1>直接匹配到</h5>,为了保险起见,用懒惰型肯定是没有错的。

</h[1-6]>表示</h1>,</h2>......</h6>,

但是这个正则表达式会将? <h4>今天。。</h5>? 也给匹配出来。这个时候我们可以利用回溯引用来实现

?

正则表达式:<h([1-6])>.*?</h1>

解析([1-6])把这个提成一个子表达式,</h1>? 1代表引用子表达式的结果,1--第一个子表达式的结果

利用回溯引用来替换字符串:?

解析:$1代表替换的时候引用的第一个子表达式,$2是第二个

大小写转化

?

  • E ? 结束转化

  • l ? 把下一个字母转化为小写

  • L ? 把/L与E之间的字符全部替换为小写

  • u ? 把下一个字母转化为大写

  • U ? 把U与E之间的字符全部转化为小写

向前向后查找

?

正则表达式:(?<=$)[0-9.]+

解析:(?<=$)?<= 表示向$符号后面查找

正则表达式:.+(?=$)? 向$符号前面查找

操作符:

(?=)

正向前查找

(?!)

反向前查找

(?<=)

正向后查找

(?<=)

反向后查找

?

嵌入条件

语法:(?(条件)满足情况下执行|不满足情况下执行)

测试正则:(?=-)(?(1)w|s)

解析:(?=-) 向前查找一个 - 字符

(?(1)w|s) 如果(?=-) 条件执行成功 ,即 - 字符存在,匹配一个w否则匹配一个s

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读