2.6 替换 (2)

  正则表达式[Jj]ack可以匹配字符串“Jack”或者“jack”。该正则表达式还可以使用替换来实现同样的匹配效果。如下正则表达式等效于正则表达式[Jj]ack

Jack|jack                                                                    (59)

  如下正则表达式等效于正则表达式Jack|jack。因此,正则表达式[Jj]ackJack|jackJack|jack能够匹配的所有字符串是相同。

(J|j)ack                                                                              (60)

  使用工具Regex Tester分别测试正则表达式[Jj]ack和(60),结果分别如图2.212.22所示。从图中可以看到,两个正则表达式匹配的结果是相同的。

 

 

 

 

 

 

 

 

         正则表达式的常用替换说明如表2-7所示。

2-7 常用替换

字符或表达式

说明

|

匹配|(竖线)字符的左侧或右侧。

(?(表达式)yes|no)

表达式要么可以匹配“yes”部分匹配;要么与“no”部分匹配。其中,“no”部分可省略。

(?(name)yes|no)

name命名的字符串要么匹配“yes”部分匹配;要么与“no”部分匹配。其中,“no”部分可省略。

注意:字符|在匹配表达式时,它首先匹配|字符的左侧部分。当左侧部分不匹配时,它才尝试匹配|字符的右侧部分。

给定以下两个正则表达式

/d{5}-/d{3}|/d{5}                                                                61

/d{5}|/d{5}-/d{3}                                                                62

根据字符|的匹配原则(优先匹配左侧表达式),正则表达式/d{5}|/d{5}-/d{3}只会匹配5位的数字字符串,而不会匹配用连接符合连接的8位数字字符串。然而,正则表达式/d{5}-/d{3}|/d{5}能够匹配用连接符合连接的8位数字字符串或者5位的数字字符串。因为,该表达式首先尝试匹配用连接符合连接的8位数字字符串,只有当未匹配时,才匹配5位的数字字符串。

使用工具Regex Tester分别测试了正则表达式(61)和(62),测试结果分别如图2.232.24所示。正则表达式/d{5}|/d{5}-/d{3}只匹配了字符串“12345”。而正则表达式/d{5}-/d{3}|/d{5}可以匹配字符串“12345-678”和字符串“12345”。

 

 

 

 

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值