Мне нужно удалить из этого: http://example.com/media/catalog/product/cache/1/thumbnail/56x/9df78eab33525d08d6e5fb8d27136e95/i/m/images_3.jpg все между товаром/и/i и сохранить http://example.com/media/catalog/product/i/m/images_3.jpg с помощью регулярного выражения или C#. Это параметры в приложении для искателя. Пожалуйста, помогите.regex удалить динамическую строку и сохранить остальные
ответ
var input = "http://example.com/media/catalog/product/cache/1/thumbnail/56x/9df78eab33525d08d6e5fb8d27136e95/i/m/images_3.jpg";
var re = new Regex("^(.+/product)/.+(/i/.+)$");
var m = re.Match(input);
if (!m.Success) throw new Exception("does not match");
var result = m.Groups[1].Value + m.Groups[2].Value;
//result = "http://example.com/media/catalog/product/i/m/images_3.jpg"
Я проверю ваш за несколько минут – geryjuhasz
Это тоже хорошо работает. Благодарю. – geryjuhasz
И это единственный ответ, который отвечает на ваш вопрос так, как он был указан (используйте регулярное выражение и получите строку до «/ i») без предполагаемой определенной длины (которая не указана в вашем вопросе) – JoelFan
string str = "http://example.com/media/catalog/product/cache/1/thumbnail/56x/9df78eab33525d08d6e5fb8d27136e95/i/m/images_3.jpg";
int prodIndex = str.IndexOf("/product/");
int iIndex = str.IndexOf("/i/");
string newStr = str.Substring(0, prodIndex + "/product/".Length)
+ str.Substring(iIndex + 1);
Вот более общий пример использования регулярных выражений, что просто ищет часть после хэш 32 символов, вместо того, предполагая, что он будет /i/
:
string str = "http://example.com/media/catalog/product/cache/1/thumbnail/56x/9df78eab33525d08d6e5fb8d27136e95/i/m/images_3.jpg";
var match = Regex.Match(str, @"(.*/product/).*/.{32}/(.*)");
var newStr = match.Groups[1].Value + match.Groups[2].Value;
Я думаю, что первый из них будет более общим, потому что я не знаю, будет ли хэш всегда содержать это nr символов. Я попробую ваш подход. спасибо – geryjuhasz
отлично, спасибо! – geryjuhasz
-1, потому что во втором разделе кода вы строго кодируете определенную длину вместо поиска символов «/ i», как заданный вопрос. Раздел 1-го кода не имеет жестко закодированной длины, но не использует регулярное выражение, как указано в quesiton. – JoelFan
- 1. Ruby regex сохранить первый экземпляр шаблона и заменить/удалить остальные
- 2. JQuery - удалить часть строки и сохранить остальные
- 3. Заменить динамическую строку с Regex
- 4. Удалить строку и сохранить DataGridView
- 5. JSP удалить строку и сохранить
- 6. Не удалось сохранить динамическую добавленную строку
- 7. Python regex удалить строку
- 8. TextCrawler Regex Удалить все и сохранить определенный
- 9. Как сохранить максимальные значения в строке и удалить остальные?
- 10. «Удалить» символ € из каждого ряда и сохранить остальные
- 11. сохранить последние 10 и удалить все остальные строки - sqlite
- 12. Как сохранить некоторые параметры URL и удалить все остальные
- 13. VBA, чтобы сохранить определенные столбцы и удалить все остальные
- 14. Удалить динамическую строку DIV в JS
- 15. Удалить динамическую строку с подтверждением поле
- 16. Удалить динамическую генерируемую строку из строки Jquery
- 17. regex PHP найти строку и удалить родителя
- 18. Regex, чтобы удалить начальную и конечную строку
- 19. удалить все остальные столбцы
- 20. Найти и удалить динамическую строку с помощью JCL
- 21. Regex удалить строку в тексте
- 22. mod_rewrite удалить запрос и сохранить строку
- 23. Удалить повторяющиеся строки и сохранить одну строку
- 24. htaccess удалить .php и сохранить строку запроса
- 25. Как сохранить динамическую гистограмму?
- 26. Найти и сохранить строку в определенном постион и удалите все остальные строки
- 27. Regex удалить строку после расширения файла
- 28. удалить повторяющиеся строки, но сохранить предпочтительную строку
- 29. Regex удалить специальные символы и сохранить акценты и() @ -_ '& chars
- 30. Как удалить последнюю строку в DataGridView и сохранить выбранную строку?
Будет 'я/m/'постоянна? Может ли это измениться? И вы пробовали какой-либо код до сих пор? Если да, отправьте код тоже. – unlimit
Да, это будет всегда как i/m – geryjuhasz