Простая задача программирования регулярных выражений - PullRequest
1 голос
/ 08 октября 2009

Я использую Yahoo Pipes, чтобы получать твиттер и фильтровать информацию. Функция регулярного выражения Pipes заменяет __________ на итерацию ________.

Мой пример:

Testbedots: happy "twins"

Я пытаюсь найти строку регулярного выражения, которая выберет все, кроме того, что находится в двойных кавычках. Я предполагаю, что будет только один набор цитат. Что касается замены в регулярном выражении, я видел, как люди использовали $ 1, $ 2, $ 3 для замены чем-то, идентифицированным как переменная в первой части функции регулярного выражения. Идея состоит в том, чтобы вытянуть слово «близнецы» или что-то еще между кавычками из строки и заставить его заменить всю строку.

Есть какие-нибудь рекомендации? Я, очевидно, новичок в regex's, но часами читаю онлайн-уроки, не делая никаких успехов.

Спасибо за вашу помощь,

Скайлер

Ответы [ 4 ]

1 голос
/ 08 октября 2009

В Yahoo Pipes вы можете использовать это выражение для замены всей строки цитируемым текстом:

^.*"(.*)".*$

и замените его на

$1

Для вашего примера это заменило бы Испытательные стенды: счастливые "близнецы" на близнецы .

Полагаю, в тексте всегда ровно две кавычки (") .

Также обратите внимание, что ваш вопрос немного сбивает с толку. Вы сказали, что хотите выражение , которое выберет все, кроме того, что находится в двойных кавычках . Звучит так, будто вам нужна вся строка, но не цитируемый текст.

0 голосов
/ 08 октября 2009

Не уверен в синтаксисе Pipes, но обычно с perl-совместимым синтаксисом регулярных выражений, я думаю, вы могли бы сделать что-то вроде

s/[^"]*"([^"]+)"[^"]*/$1/
0 голосов
/ 08 октября 2009

Я бы, наверное, написал регулярное выражение как:

/"([^"]*)"/

Другими словами, начинайте сопоставлять двойные кавычки, сопоставляйте символы, не заключенные в двойные кавычки, пока не получите другую двойную кавычку. Скобки показывают, что вас интересует. Если вы хотите, чтобы хотя бы один символ (пустая строка не работал), вместо *****.

поставьте +

Это поместит интересующий вас бит в 1 доллар или любой другой ваш синтаксис для первого захваченного совпадения.

0 голосов
/ 08 октября 2009

Попробуйте это регулярное выражение

(\w+:.*?) "

Это «получит слово перед символом«: »и самую большую последовательность символов перед пробелом, за которым следует двойная кавычка»

...