Аналог замены по regexp в C# сниппете?

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 190
Баллы
113
Dimonix я знаю как работать с стандартными экшенами мне нужно реализовать в c# либо то что ты предлагаеш либо то что я использовал в стандартном вариянте
Я уже насчитал 4 предложенных ранее работоспособных вариантов решения твоей проблемы. Не понимаю, в чем сыр-бор ...
 
  • Спасибо
Реакции: Dimionix

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18
А в этом коде что не устраивает?
прошу прошения я не понел что это новый код все же резулитат мне нужно положить в ту же переменой резулитат ложится в другом месте у кубика стоит галочка не возврашать значения мне нужно из project.Variables["Login_seosprint"] резулитат в project.Variables["Login_seosprint"]
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 099
Баллы
113
прошу прошения я не понел что это новый код все же резулитат мне нужно положить в ту же переменой резулитат ложится в другом месте у кубика стоит галочка не возврашать значения мне нужно из project.Variables["Login_seosprint"] резулитат в project.Variables["Login_seosprint"]
Галочку сними и выбери любую переменную, в которую хочешь положить результат.
И правильно @amyboose сказал, что все предложенные варианты в итоге будут иметь нужный тебе результат.
 

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18
Галочку сними и выбери любую переменную, в которую хочешь положить результат.
И правильно @amyboose сказал, что все предложенные варианты в итоге будут иметь нужный тебе результат.
а как указать переменую в самом коде у меня там 6 пременых нужно обработать и я хотел одним кубикам зделать вместо 6 а так получается один кубик обрабатовает одну переменую
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 099
Баллы
113
а как указать переменую в самом коде у меня там 6 пременых нужно обработать и я хотел одним кубикам зделать вместо 6 а так получается один кубик обрабатовает одну переменую
Так надо было сразу об этом писать!
C#:
string str = project.Variables["Login_seosprint"].Value;
project.Variables["Login_seosprint"].Value = str.Replace("[Логин]=", "");
ну или в одну строку, если надо
C#:
project.Variables["Login_seosprint"].Value = project.Variables["Login_seosprint"].Value.Replace("[Логин]=", "");
Галочку "Не возвращать значение" можно ставить, можно не ставить.

PS. На будущее, под каждым постом есть кнопка "Спасибо!", если что.
 

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18
Так надо было сразу об этом писать!
C#:
string str = project.Variables["Login_seosprint"].Value;
project.Variables["Login_seosprint"].Value = str.Replace("[Логин]=", "");
ну или в одну строку, если надо
C#:
project.Variables["Login_seosprint"].Value = project.Variables["Login_seosprint"].Value.Replace("[Логин]=", "");
Галочку "Не возвращать значение" можно ставить, можно не ставить.

PS. На будущее, под каждым постом есть кнопка "Спасибо!", если что.
ОО другой кампот спасибо поставел и лайк я просто недавно связался с этим продуктом и пока что не знаю всех тонкостеи связыны с форумом
 

evgen2208

Client
Регистрация
12.10.2016
Сообщения
130
Благодарностей
162
Баллы
43
Кто знает, почему не работает Regex.Replace ??
Ошибка
"Для нестатического поля, метода или свойства "System.Text.RegularExpressions.Regex.Replace(string, string)" требуется ссылка на объект".
В массиве matches содержатся УРЛы фотографий, мне нужно из них сохранить только названия файлов в строку с разделителем.

Код
Код:
    string pattern = @"(?<=data-url\=""//).+?(?="")";
    Regex newReg = new Regex(pattern);
    MatchCollection matches = newReg.Matches(fotos);
    string fotos_name = "";
        for (int n=0;n<matches.Count;n++)
        {
        fotos_name += System.Text.RegularExpressions.Regex.Replace(matches[n].Value.ToString(), @".+/") + "|";
        }
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 595
Баллы
113
попробуй
Код:
Regex.Replace(matches[n].Value.ToString(), @".+/", "")
 
  • Спасибо
Реакции: evgen2208

evgen2208

Client
Регистрация
12.10.2016
Сообщения
130
Благодарностей
162
Баллы
43
тоже ругается, но другая ошибка
Ошибка в действии "CS1503" "Аргумент "3": преобразование типа из "string" в "System.Text.RegularExpressions.RegexOptions" невозможно".
 

evgen2208

Client
Регистрация
12.10.2016
Сообщения
130
Благодарностей
162
Баллы
43
Последнее редактирование:

Trader1985

Client
Регистрация
14.12.2011
Сообщения
131
Благодарностей
31
Баллы
28
Чуваки, помогите, пожалуйста, кто может!
Есть С# код который я взял из этой ветки:

Код:
string Test = project.Variables["Test"].Value;
string regexTest = System.Text.RegularExpressions.Regex.Replace(Test, @"квадрат", "круг");
return regexTest;
В общем, я спарсил текст со страницы, положил его в переменную и, например, мне надо заменить слово "квадрат" на "круг".
Отлично, код работает. Но что делать, если слов которые надо заменить много? Как сделать массовую замену в тексте? Например "квадрат" на "круг", "треугольник" на "прямоугольник" и т.п.))
Стандартными экшенами получается слишком длинная ветка из однотипныx действий. Хочу всё запихнуть в один экшен "С# код"
 
Последнее редактирование:

orka13

Client
Регистрация
07.05.2015
Сообщения
2 159
Благодарностей
2 159
Баллы
113
Чуваки, помогите, пожалуйста, кто может!
Есть С# код который я взял из этой ветки:

Код:
string Test = project.Variables["Test"].Value;
string regexTest = System.Text.RegularExpressions.Regex.Replace(Test, @"квадрат", "круг");
return regexTest;
В общем, я спарсил текст со страницы, положил его в переменную и, например, мне надо заменить слово "квадрат" на "круг".
Отлично, код работает. Но что делать, если слов которые надо заменить много? Как сделать массовую замену в тексте? Например "квадрат" на "круг", "треугольник" на "прямоугольник" и т.п.))
Стандартными экшенами получается слишком длинная ветка из однотипныx действий. Хочу всё запихнуть в один экшен "С# код"
Код:
string Test = project.Variables["Test"].Value;
string regexTest = System.Text.RegularExpressions.Regex.Replace(Test, @"квадрат", "круг");
string regexTest1 = System.Text.RegularExpressions.Regex.Replace(regexTest, @"квадрат1", "круг1");
string regexTest2 = System.Text.RegularExpressions.Regex.Replace(regexTest1, @"треугольник", "прямоугольник");
return regexTest2;
Ну ты понял суть, что передаем в следующую string то, что заменили в предыдущей. И на "return" последнюю string.
 
  • Спасибо
Реакции: seodamage и Trader1985

Trader1985

Client
Регистрация
14.12.2011
Сообщения
131
Благодарностей
31
Баллы
28
Вот спасибо большое, выручил! :dk:
Смотришь, вроде просто всё, но сам бы я никогда не догадался наверное.
Делаю граббер: получаю текст со страницы, и надо потом "переводить" некоторые типичные русские слова, на английские.
Шаблон большой планируется, а так я место сэкономлю значительное, потом проще читаться будет.
Можно, наверное, в этот же экшен запихать ещё регулярку для удаления html тегов.
Типа, спарсил текст, положил в переменную. А далее регуляркой удаляю html теги, перевожу некоторые слова, и ещё удаляю регуляркой лишние пустые строки.
И всё это в одном экшене! Компактно и аккуратно!
 
Последнее редактирование:

orka13

Client
Регистрация
07.05.2015
Сообщения
2 159
Благодарностей
2 159
Баллы
113
.... в этот же экшен запихать ещё регулярку для удаления html тегов. Будет всё компактно и аккуратно!
Я беру код не со страницы, а из GET-запроса (быстрее, ведь без использования браузера). чищу сначала через HtmlDecode, потом удаляю блоки script, style, потом оставшиеся теги, ссылки и т.д., и на выходе получаем оставшийся текст. Вот вся эта фигня:
Код:
var url = project.Variables["Get_rezult"].Value;
var data = System.Net.WebUtility.HtmlDecode(url);
string regexTest = System.Text.RegularExpressions.Regex.Replace(data, @"<script[\w\W]*?</script>|<style[\w\W]*?</style>|(https?://[\w.:]+/?(?:[\w/?&=.~;\-+!*_#%])*)|(\<br ?/?\>[^\S \    ]*(\r|\n)[^\S \    ]*)", " ", System.Text.RegularExpressions.RegexOptions.Multiline|System.Text.RegularExpressions.RegexOptions.IgnoreCase );
string regexTest1 = System.Text.RegularExpressions.Regex.Replace(regexTest, @"<[\w\W]*?>", " ", System.Text.RegularExpressions.RegexOptions.Multiline);
string regexTest2 = System.Text.RegularExpressions.Regex.Replace(regexTest1, @"[{}]", "");
return regexTest2;
 
  • Спасибо
Реакции: Astraport и Trader1985

Trader1985

Client
Регистрация
14.12.2011
Сообщения
131
Благодарностей
31
Баллы
28
Я беру код не со страницы, а из GET-запроса
Ой, это уже сложновато для меня... )) Я понимаю, что через GET всё быстрее. Но мне нужна авторизация на сайте.
Я так делал: авторизуюсь через браузер, далее С#-кодом получаю куки и ложу их в переменную. Далее эту переменную вставляю в GET-экшен.
Всё нормально парсится, но... Мне ещё надо скачивать кое-какие файлы с этой страницы которые доступны только после авторизации, - этот момент для меня тёмный лес.
Вроде нужен какой-то там "сниффер", чёт там отслеживать. Короче, х.з. Я вообще раньше давно, на заводе работал, у меня нет специального образования :D Всё "методом тыка" осваиваю
 

Trader1985

Client
Регистрация
14.12.2011
Сообщения
131
Благодарностей
31
Баллы
28
Вот вся эта фигня...
Слушай, Степан, извини за наглость конечно, но может подскажешь почему у меня код из этого топика не работает:

Код:
//    -------------------------------------------------------------  //
//    Получаем контент локальной переменной и ложим в перемнную
//    content;
//    -------------------------------------------------------------  //
    var content = project.Variables["Content"];
//    Где project.Variables["Content"] - перменная проекта Content;
//    -------------------------------------------------------------  //
//    Получаем title страницы и сохраняем ее в переммную проекта;
//    -------------------------------------------------------------  //
    var    pattern = @"(?<=<title>).*?(?=</title>)";
    var title = Regex.Match(content, pattern).Value;
    project.Variables["title"] = title;
//    Где project.Variables["title"] - перменная проекта title;
//    -------------------------------------------------------------  //
//    Получаем контент div блока страницы и сохраняем ее в переммную проекта;
//    -------------------------------------------------------------  //
    var    pattern = @"(?<=<div>).*?(?=</div>)";
    var article = Regex.Match(content, pattern).Value;
    project.Variables["article"] = article;
В общем, мне надо спарсить несколько значений из переменной, и раскидать их по другим переменным. Для каждой переменной будет своя регулярка.
Но почему-то этот код на работает, вылазит куча ошибок каких-то:
Ошибки.PNG
 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 159
Благодарностей
2 159
Баллы
113
Слушай, Степан, извини за наглость конечно, но может подскажешь почему у меня код из этого топика не работает:

Код:
//    -------------------------------------------------------------  //
//    Получаем контент локальной переменной и ложим в перемнную
//    content;
//    -------------------------------------------------------------  //
    var content = project.Variables["Content"];
//    Где project.Variables["Content"] - перменная проекта Content;
//    -------------------------------------------------------------  //
//    Получаем title страницы и сохраняем ее в переммную проекта;
//    -------------------------------------------------------------  //
    var    pattern = @"(?<=<title>).*?(?=</title>)";
    var title = Regex.Match(content, pattern).Value;
    project.Variables["title"] = title;
//    Где project.Variables["title"] - перменная проекта title;
//    -------------------------------------------------------------  //
//    Получаем контент div блока страницы и сохраняем ее в переммную проекта;
//    -------------------------------------------------------------  //
    var    pattern = @"(?<=<div>).*?(?=</div>)";
    var article = Regex.Match(content, pattern).Value;
    project.Variables["article"] = article;
В общем, мне надо спарсить несколько значений из переменной, и раскидать их по другим переменным. Для каждой переменной будет своя регулярка.
Но почему-то этот код на работает, вылазит куча ошибок каких-то:
Посмотреть вложение 21643
Не хватало приставки ".Value" в строках операции с переменными из проекта. И дублировалась переменная "pattern" (я заменил дубль на "pattern2")
C#:
//    -------------------------------------------------------------  //
//    Получаем контент локальной переменной и ложим в перемнную
//    content;
//    -------------------------------------------------------------  //
    var content = project.Variables["Content"].Value;
//    Где project.Variables["Content"] - перменная проекта Content;
//    -------------------------------------------------------------  //
//    Получаем title страницы и сохраняем ее в переммную проекта;
//    -------------------------------------------------------------  //
    var    pattern = @"(?<=<title>).*?(?=</title>)";
 var title = Regex.Match(content, pattern).Value;
  project.Variables["title"].Value = title;
//    Где project.Variables["title"] - перменная проекта title;
//    -------------------------------------------------------------  //
//    Получаем контент div блока страницы и сохраняем ее в переммную проекта;
//    -------------------------------------------------------------  //
  var    pattern2 = @"(?<=<div>).*?(?=</div>)";
 var article = Regex.Match(content, pattern2).Value;
 project.Variables["article"].Value  = article;
 
  • Спасибо
Реакции: Dorian_Gray и Trader1985

Trader1985

Client
Регистрация
14.12.2011
Сообщения
131
Благодарностей
31
Баллы
28
Отлично! Спасибо большое, всё работает!
А дальше я уж сам допишу по мере необходимости: pattern2; pattern3... и т.д.
Теперь много места сэкономлю в проекте.
 

Газинур

Новичок
Регистрация
10.07.2017
Сообщения
2
Благодарностей
0
Баллы
1
Доброго времени суток! Не подскажете как добавить ноль к единичным числам? Замена затрагивает десятичные числа,
то есть замена 1 2 3 на 01 02 03 затрагивает 11 12 13 типа 0101 012 013.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 099
Баллы
113
Доброго времени суток! Не подскажете как добавить ноль к единичным числам? Замена затрагивает десятичные числа,
то есть замена 1 2 3 на 01 02 03 затрагивает 11 12 13 типа 0101 012 013.
Сделать замену по регулярке \b(\d)\b на 0$1
 

Газинур

Новичок
Регистрация
10.07.2017
Сообщения
2
Благодарностей
0
Баллы
1
Блин все так просто? Спасибо заработало.
 

p-sergei

Client
Регистрация
20.12.2016
Сообщения
523
Благодарностей
255
Баллы
63
товарищи помогите, мне надо перенос строки в переменной \n, заменить на "+"\n"+"
пытаюсь в лоб так
Код:
message = message.Replace("\n",""+"\n"+"");
но это естественно не работает ибо нужно экранировать, а вот как заэкранировать чтобы поменялось \n на "+"\n"+", вот тут я башку сломал, нифига не выходит.
Чтобы было понятней была
переменная=
Привет
привет
надо получить так переменная = Привет"+"\n"+"привет
 

LmPopo

Client
Регистрация
06.12.2012
Сообщения
299
Благодарностей
136
Баллы
43
  • Спасибо
Реакции: p-sergei

p-sergei

Client
Регистрация
20.12.2016
Сообщения
523
Благодарностей
255
Баллы
63
@LmPopo огромное спасибо, решение когда оно есть выглядит очевидно, я как тупень что-то бился c @ экранировал этим \, но блин не везде и получалась какая-то хрень постоянно :D
 

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