我想知道应该使用哪个正则表达式来替换1 - 55 of 55
以仅在雅虎管道的Regex模块中获取55
。
由于
答案 0 :(得分:1)
匹配
\d+ - (\d+) of \1
与
$1
答案 1 :(得分:1)
你可以尝试匹配这个:
\d+ - (\d+) of \1
并替换为$1
,这是第1组捕获的内容。
\d
是数字character class,+
是一个或多个repetition。 (…)
是capturing group,而\1
则返回该组匹配的内容。所以这将符合以下字符串:
num1 - num2 of num2
| |
\________/ must match
这种模式稍有修改,在空白匹配方面更灵活:
\d+\s+-\s+(\d+)\s+of\s+\1
它与之前的模式类似,但是之前我们只有一个文字空格字符,我们现在使用\s+
,这是一个匹配任意数量的空白字符的非空序列的模式。这包括换行符,标签等。
如果第三个号码不必与第二个号码相同,则只需使用其他\d+
代替\1
。
\d+\s+-\s+\d+\s+of\s+(\d+)
现在这将匹配像"1 - 20 of 149"
这样的字符串,对于间距是自由的。现在移动括号以匹配第三个数字,因此如果要用该数字替换整个字符串(在这种情况下为149
),只需替换为$1
。
如果你想单独捕获所有3个数字,你可以这样写:
(\d+)\s+-\s+(\d+)\s+of\s+(\d+)
\___/ \___/ \___/
1 2 3
现在第一个数字由第1组捕获,第二个数字由第2组捕获,第三个数字由第3组捕获。