Yahoo Pipes中的正则表达式

时间:2010-08-25 11:44:12

标签: regex replace yahoo-pipes capturing-group

我想知道应该使用哪个正则表达式来替换1 - 55 of 55以仅在雅虎管道的Regex模块中获取55

由于

2 个答案:

答案 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组捕获。