2015-12-02 3 views
0

Я просто просматриваю RegEx ответы на вопросы других пользователей, но не смогли найти решение проблемы в моем случае. Я также читал ссылки на регулярные выражения, данные некоторыми помощниками здесь, но я не мог правильно понять.RegEx в Notepad ++ Для удаления или замены диапазона текста

Я редактирую мои сайты с сайтами. В карты сайта, у меня есть некоторые ссылки в виде:

http://foo.com/download/something-after-download-different-for-each-link-12-23-2014.html?id=my5sIUosfiQ&itag=18 

И я хочу, чтобы изменить все эти ссылки просто:

http://foo.com/download/?id=my5sIUosfiQ&itag=18 

Здесь ?id= и itag= значения различны для каждой ссылки. Таким образом, они не должны меняться для каждой ссылки, о которой уже упоминалось.

Плюс, часть something-after-download-different-for-each-link-12-23-2014.html также различна для каждой ссылки, так как каждый файл отличается от загрузки. Итак, я хочу в основном удалить эту часть из каждой ссылки. Как я могу это сделать?

+0

Привет, добро пожаловать к переполнению стека! Я переформатировал ваш вопрос, чтобы сделать его более читаемым (надеюсь, я ничего не сломал).Когда у вас есть время, ознакомьтесь с разделом справки для редактора, у него есть некоторые отличные функции, особенно для форматирования кода. Теперь, на ваш вопрос - одного до/после примера может быть недостаточно для того, чтобы мы могли догадаться об этом правиле. Это просто «удалить все после'/download/'до первого символа??»? –

+0

Благодарим за редактирование. В следующий раз я попытаюсь отформатировать еще лучше. Во-вторых: Да, я хочу удалить все после/download/PART-TO-REMOVE? или до первого? как ты сказал. –

ответ

1

Некоторые вещи, которые могли бы работать -
(Обратите внимание, что шансы найти странствующий /download/ не последовало
по непробельных ни знак вопроса, то вопросительный знак,
сделать это практически невозможно подобрать что-нибудь другое чем URL,
)

Если нп ++ использует \K конструкцию, вы могли бы использовать этот
поиск: /download/\K[^\s?]+(?=\?)
Заменить: ничего

Если нет, то вы могли бы использовать этот
поиск: (?<=/download/)[^\s?]+(?=\?)
Replace: ничего

или, еще лучше
найти: (/download/)[^\s?]+(?=\?)
Заменить: $1

+0

Я пробовал последний, и он работал :) Спасибо! –

0

Вы должны найти

http://foo\.com/download/[^?]*\?id=(.*) 

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

http://foo\.com/download/\?$1 

Это захватывает все между ...download/ и ?id=... и удаляет его.

+0

Это не сработало. Результат: 0 Появление заменено. Затем я попытался ответить на этот вопрос, и это сработало. –

+0

«Это не сработало» не особенно полезно. Так как это * работает * на вашей тестовой строке, подумайте о том, чтобы написать более конкретный вопрос в следующий раз .... –

0

Включить регулярное выражение и использование этот поиск & заменить:

Найти:

(http://foo.com/download/)(.*)(\?id=my5sIUosfiQ&amp;itag=18) 

Заменить:

\1\3 
Смежные вопросы