正则实战案例解析

正则实战案例解析

案例1

需求
## 1. 输入内容
一些[@姓名]文本[@姓名/张小飞]你好@水果/水蜜桃

## 2. 输出内容
@姓名
@姓名/张小飞
@水果/水蜜桃

## 3. 处理规则
需要匹配出所有`@词典/词条`, 当没有词条时匹配出词典.

@后面表示词典
/后面表示词典

如果有 [ ] 号时, 则以它为界限。

## 4. 程序语言
JavaScript
实现1
@[^@\[\]\/\s]+\/?([^@\[\]\/\s]+)?
解析1
@[^@\[\]\/\s]+\/?([^@\[\]\/\s]+)?

@ 按字面匹配 字符 @,(区分大小写)
匹配不在下列列表中的一个单字符 [^@\[\]\/\s]+
+ 量词 — 匹配1到无穷次,尽可能多匹配,如果有必要,回溯匹配更少内容(贪婪)
  @ 按字面匹配 字符 @,(区分大小写)
  \[ 按字面匹配 字符 [(区分大小写)
  \] 按字面匹配 字符 ](区分大小写)
  \/ 按字面匹配 字符 /(区分大小写)
  \s 匹配空白符(等价于[\r\n\t\f\v ])
  \/? 按字面匹配 字符 /(区分大小写)
? 量词 — 匹配零个到1次,尽可能多匹配,如果有必要,回溯匹配更少内容(贪婪)
  1st捕获组: ([^@\[\]\/\s]+)?
? 量词 — 匹配零个到1次,尽可能多匹配,如果有必要,回溯匹配更少内容(贪婪)
匹配不在下列列表中的一个单字符 [^@\[\]\/\s]+
  + 量词 — 匹配1到无穷次,尽可能多匹配,如果有必要,回溯匹配更少内容(贪婪)
  @ 按字面匹配 字符 @,(区分大小写)
  \[ 按字面匹配 字符 [(区分大小写)
  \] 按字面匹配 字符 ](区分大小写)
  \/ 按字面匹配 字符 /(区分大小写)
  \s 匹配空白符(等价于[\r\n\t\f\v ])
  • 主体是分成两段式
  • 其中^@\[\]\/\s表示匹配不在@[]/\s这几个字符

案例2

需求
## 1. 输入内容
lg[(]([^(())]+)[)]

## 2. 输出内容
lg(W*10)
lg(W
实现
lg[(]([^(())]+)[)]
解析
lg[(]([^(())]+)[)]

lg 按字面匹配 字符 lg,(区分大小写)
匹配下列列表中的一个单字符 [(]
  (( 从列表 ((区分大小写) 中匹配一个单字符
1st捕获组: ([^(())]+)
  匹配不在下列列表中的一个单字符 [^(())]+
    + 量词 — 匹配1到无穷次,尽可能多匹配,如果有必要,回溯匹配更少内容(贪婪)
    (()) 从列表 (()) (区分大小写) 中匹配一个单字符
匹配下列列表中的一个单字符 [)]) 从列表 )) (区分大小写) 中匹配一个单字符
  • 需求中给出的括号是中文括号(
  • ^(())是剔除中文括号中再有的括号

案例3

需求

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-st4vu0Jl-1637232880355)(/Users/frankcooper/Library/Application Support/typora-user-images/image-20211118095406376.png)]

## 1. 输入内容
777TG
999AB
666DG
788YH
678GU

## 2. 输出内容
777TG
999AB
666DG
实现
^(\d)\1{2}[A-Z]{2}
解析
^(\d)\1{2}[A-Z]{2}

^ 断言此为一行的起始位置
1st捕获组: (\d)
  \d 匹配一个数字字符(等价于[0-9])
\1{2} 匹配与捕获组1st最近匹配的相同的文本
  {2} 量词 — 匹配2次
匹配下列列表中的一个单字符 [A-Z]{2}
  {2} 量词 — 匹配2A-Z 单字符在A (index 65)Z (index 90) 区间
  • 需要注意的是\1这个用法,\1{2} 匹配与捕获组1st最近匹配的相同的文本
  • 同理^(\d)(\w)\2{2}[A-Z]{2}$可以捕获到5sssYU这种case

案例4

需求

实现

解析

案例

需求

实现

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值