3

我想知道应该应用什么正则表达式来替换1 - 55 of 55只能进入55雅虎管道的正则表达式模块。

谢谢

4

2 回答 2

1

匹配

\d+ - (\d+) of \1 

$1
于 2010-08-25T11:46:34.450 回答
1

你可以尝试匹配这个:

\d+ - (\d+) of \1

并替换为$1,这是第 1 组捕获的内容。

\d数字字符类+是一个或多个重复(…)是一个捕获组,而 是指\1该组匹配的内容。所以这将匹配如下字符串:

num1 - num2 of num2
        |        |
        \________/ must match

参考


变化

这个模式是一个小的修改,它的空白匹配更加灵活:

\d+\s+-\s+(\d+)\s+of\s+\1

它与前面的模式类似,但是之前我们只有一个文字空格字符,我们现在使用\s+,这是一个匹配任意数量空白字符的非空序列的模式。这包括换行符、制表符等。

如果第三个数字不必与第二个数字相同,则只需使用 another\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 组捕获。

于 2010-08-25T11:48:16.607 回答