30.使用捕获组复用模式

说明

你搜索的某些模式将在字符串中多次出现。手动重复正则表达式是浪费时间的。有一个更好的方法可在你的字符串中有多个重复子串时进行指定。

你可以使用capture groups捕获组搜索重复的子串。括号,(and),用于查找重复的子串。你把会重复的模式的正则表达式放在括号之间。

要指定重复字符串的出现位置,你可以使用反斜杠(\),然后使用数字。该数字从1开始,并随着你使用的每个附加捕获组而增加。一个例子是\1来匹配第一个组。

下面的示例匹配所有出现两次并由空格分隔的单词:

var repeatStr = "regex regex";
var repeatRegex = /(\w+)\s\1/;
repeatRegex.test(repeatStr); // 返回 true
repeatStr.match(repeatRegex); // 返回 ["regex regex", "regex"]

在字符串上使用.match()方法将返回一个带有匹配字符串的数组,以及其捕获组。


l练习

reRexx中使用capture groups捕获组来匹配字符串中出现三次的数字,每个数字由空格分隔。

  • 你的正则表达式应为数字使用快捷字符类。
  • 你的正则表达式应该重复使用捕获组两次。
  • 你的正则表达式应该有两个空格分隔三个数字。
  • 你的正则表达式应该匹配"42 42 42"
  • 你的正则表达式应该匹配"100 100 100"
  • 你的正则表达式应该不匹配"101 102 103"
  • 你的正则表达式应该不匹配"1 2 3"
  • 你的正则表达式应该匹配"10 10 10"
var reRegex = /change/; // Change this line

答案

方法描述
正则表达式正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
元字符描述
+匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
\d匹配一个数字字符。等价于 [0-9]。
(pattern)匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
  
var reRegex = /(\d+)\s\1\s\1/; // Change this line

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值