捕获组、非捕获组、捕获组引用

捕获组()

把匹配到的东西存到组里,便于复用或使用|作为可选分支

使用()可以将括号内的字符作为一个整体,去匹配这个整体并捕获它(捕获后可使用"引用"来使组内字符其复用匹配)

例题
题目1

匹配以下所有的编程语言:Python、SQL、JavaScript、R

(注意匹配完整单词\b,否则会将R开头的单词也匹配进去)

在这里插入图片描述

题目2

从文本中提取所有动词: finding, matching, editing,并将它们作为捕获组的一部分返回。

(注意在表达式前后使用\b添加单词边界,限制匹配单词的开头与结尾;注意使用\w+而不是\w来匹配一个或多个字符,而不是ing前的一个字符)
在这里插入图片描述

题目3

使用捕获组找到并替换短语 “Regex or Regexp” 为 “Regex”。

在这里插入图片描述
(虽然以上写法可以正确匹配,但不符合正则表达式的一般逻辑习惯,可读性差,不利于维护)

更推荐使用(Regex) or Regexp进行匹配,在替换时使用\1

引用组/123

正则表达式内拥有捕获组后,可使用/来复用每个捕获组(注意:每个捕获组从1开始排序,而不是0)

现有捕获组(a)(b)(c),其中,(a)为1号组,(b)为2号组,©为3号组

例题

现有文本 ha-ha,haa-haa 要求匹配所有字符(注意:第一组用 \1 来避免重复书写。在表达式的末尾键入 \2 以引用第二组。)

答案为(ha)-\1,(haa)-\2

在这里插入图片描述

非捕获组(?: )

非捕获组在捕获组的括号内添加:?,使用了非捕获组后,该组将不会拥有组号,在使用引用组时也不会被视为可被选择的捕获组

样例

现有文本 ha-ha,haa-haa 要求将其全部匹配。

但如果使用(?:ha)-ha,(haa)-\1来使(ha)为非捕获组,那么在使用引用\1时,该引用定位到的组则会是(haa)而不是(?:ha)

在这里插入图片描述
参考网站:https://regexlearn.com/zh-cn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值