Экранирование подстановок в Regex.Replace

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
Как экранировать $1 ?
Не работает
Код:
big_thumb = Regex.Replace(big_thumb, "^(.*)1\\.jpg", "$120.jpg");
Работает, если поставить пробел
Код:
big_thumb = Regex.Replace(big_thumb, "^(.*)1\\.jpg", "$1 20.jpg");
Нашел, не очень удобный поиск у msdn :-)

https://msdn.microsoft.com/ru-ru/library/ewy2t5e0(v=vs.110).aspx

Нужно использовать {$1}.
Проверю...

Работает, только обрамляется {}

Как исправить?
 
Последнее редактирование:

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Не понимаю что дано, что нужно получить
 

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
Текст:
Код:
http://zennolab.com/discussion/members/rostonix_1.jpg
НАЙТИ:
Код:
big_thumb = Regex.Replace(big_thumb, "^(.*)1\\.jpg", "$120.jpg");
- не работает
Результат замены big_thumb будет:
Код:
$120.jpg
Если после подстановки в регулярном выражении стоит цифра, то не работает, заменятся на "$12"- буквально.
Если стоит пробел или подстановка обрамлена {}, то рег. выражение работает - НАЙТИ "$1 20.jpg", заменяется на "http://zennolab.com/discussion/members/rostonix_ 20.jpg" - (обратите внимание на пробел)

Вопрос: как экранировать подстановки, что бы не пришлось потом удалять пробелы или {} ???
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Я вообще не понимаю как эту регулярка ^(.*)1\\.jpg может работать на примере приведенном
 

myweb101

Client
Регистрация
29.04.2013
Сообщения
175
Благодарностей
30
Баллы
28
Не обратил внимание, но сути вопроса не меняет, давай так:


Код:
using System.Text.RegularExpressions;

string thb = "Hello world";
string result = Regex.Replace(thb, "^(.*) (.*)", "$120");
string result2 = Regex.Replace(thb, "^(.*) (.*)", "$1 20");
string result3 = Regex.Replace(thb, "^(.*) (.*)", "{$1}20");
project.SendInfoToLog(result);
project.SendInfoToLog(result2);
project.SendInfoToLog(result3);
Как можно экранировать подстановку $1, чтобы получить:
Hello20
 
  • Спасибо
Реакции: Rimen

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)