Регулярное выражение в Yahoo Pipes - PullRequest
3 голосов
/ 25 августа 2010

Я хочу знать, какое регулярное выражение следует применять для замены 1 - 55 of 55, чтобы получить только 55 в модуле Regex труб Yahoo.

Спасибо

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Вы можете попытаться сопоставить это:

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

И замените на $1, это то, что захватила группа 1.

\d - это цифра класс символов , + - это один или более повтор .(…) является группой захвата , а \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.

1 голос
/ 25 августа 2010

Match

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

с

$1
...