正则笔记(2)

 替换
   指的是有几种规则,如果满足其中任意一种规则都应该当成匹配,具体方法是用|把不同的规则分隔开
   例如:0/d{2}-/d{8}|0/d{3}-/d{7}-----匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(0376-2233445)
   注意:使用替换时,顺序是很重要的
   例如: /d{5}-/d{4}|/d{5} 与 /d{5}|/d{5}-/d{4} 效果不同,因为匹配替换时,将会从左到右地测试每个分枝条件,如果满足了某个分枝的话,就不会去管其它的替换条件了
分组:
 如果想要重复多个字符,可以用小括号来指定子表达式(也叫做分组)
 例如:(/d{1,3}/.){3}/d{1,3}---/d{1,3}匹配1到3位的数字,(/d{1,3}/.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(/d{1,3})
后向引用
 后向引用用于重复搜索前面某个分组匹配的文本。
 例如:/b(/w+)/b/s+/1/b---可匹配go go,kitty kitty这样的单词,/1代表分组1匹配的文本
 规则是:从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推
 也可以自己指定子表达式的组名,语法:(?<Word>/w+)(或者把尖括号换成'也行:(?'Word'/w+)),这样就把/w+的组名指定为Word了
 /b(/w+)/b/s+/1/b可以改写为:/b(?<word>/w+)/b/s+/k<word>/b
常用分组语法:
   捕获:
 (exp)----匹配exp,并捕获文本到自动命名的组里
 (?<name>exp)---匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
 (?:exp)---匹配exp,不捕获匹配的文本,也不给此分组分配组号
  零宽断言:
 (?=exp)---匹配exp前面的位置
 (?<=exp)---匹配exp后面的位置
 (?!exp)---匹配后面跟的不是exp的位置
 (?<!exp)---匹配前面不是exp的位置
  注释:
 (?#comment)---这种类型的组不对正则表达式的处理产生任何影响,用于提供注释让人阅读
零宽断言:
 用于查找在某些内容(但并不包括这些内容)之前或之后的东西,像/b,^,$那样用于指定一个位置,这个位置应该满足一定的条件(断言),因此它们也被称为零宽断言
 (?=exp)也叫零宽度正预测先行断言,它断言自身出现的位置的后面能匹配表达式exp
 例如:/b/+(?=ing/b),匹配以ing结尾的单词的前面部分(除了ing以外的部分)
 (?<=exp)也叫零宽度正回顾后发断言,它断言自身出现的位置的前面能匹配表达式exp
 例如:(?<=/bre)/w+/b,匹配以re开头的单词的后半部分(除了re以外的部分)
  ((?<=/d)/d{3})*/b,用它对1234567890进行查找时结果是234567890

    今天阿去海甸岛了,竟然在大街上碰到那个林什么什么了,真是人生何处不相逢啊,她一脸不屑滴看着阿走过,阿觉得这世界有点好笑

世人笑我太疯癫,我笑世人看不穿

阿有阿滴书要看,阿有阿滴路要走,管那么多做什么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值