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

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28
Посоветуйте пожалуйста аналог экшена "Обработка текста"-"Замена" для использования в C#-сниппете.

Замена текста на текст делается просто:
Код:
str1 = str1.Replace("что","на что");
...однако стоит задача сделать замену по регулярке, а конкретно - убрать все теги и символы табуляции, заменив регексп "\t|<.*?>" на пустоту.

В экшенах это выглядело бы так:
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
791
Баллы
113
System.Text.RegularExpressions.Regex.Replace(textvar, @"\t|<.*?>", "");
 

sibbora

Client
Регистрация
23.11.2013
Сообщения
149
Благодарностей
73
Баллы
28
Спасибо! так работает:
Код:
strDescription = System.Text.RegularExpressions.Regex.Replace(strDescription, @"\t|<.*?>", "");
 
  • Спасибо
Реакции: Rimen и Malchishka

Malchishka

Client
Регистрация
10.11.2011
Сообщения
216
Благодарностей
36
Баллы
28
Что-то не получается у меня выполнить код выше. Закидываем в блок C# код

Код:
strDescription = System.Text.RegularExpressions.Regex.Replace(strDescription, @"\t|<.*?>", "");
Предварительно поменяв "strDescription" на название своей переменной из которой берём текст и в которую его потом перезаписывам.

В моем случае получается так:

Код:
Test = System.Text.RegularExpressions.Regex.Replace(Test, @"\t|<.*?>", "");
Переменная Test существует и в ней есть текст, который нужно обработать, но при выполнении экшена я получаю следующее:



Где я допустил ошибку?
 

blackeye

Client
Регистрация
28.12.2012
Сообщения
197
Благодарностей
119
Баллы
43
директиву using добавить нужно
 

Вложения

  • 336,4 КБ Просмотры: 427
  • Спасибо
Реакции: Malchishka

lokiys

Moderator
Регистрация
01.02.2012
Сообщения
4 812
Благодарностей
1 187
Баллы
113
Что-то не получается у меня выполнить код выше. Закидываем в блок C# код

Код:
strDescription = System.Text.RegularExpressions.Regex.Replace(strDescription, @"\t|<.*?>", "");
Предварительно поменяв "strDescription" на название своей переменной из которой берём текст и в которую его потом перезаписывам.

В моем случае получается так:

Код:
Test = System.Text.RegularExpressions.Regex.Replace(Test, @"\t|<.*?>", "");
Переменная Test существует и в ней есть текст, который нужно обработать, но при выполнении экшена я получаю следующее:



Где я допустил ошибку?

C#:
string Test = "Kakoj to tvoj text";
string regexTest = System.Text.RegularExpressions.Regex.Replace(Test, @"\t|<.*?>", "");
return regexTest;
Ilji jeslji iz project variables togda

C#:
string Test = project.Variables["Test"].Value;
string regexTest = System.Text.RegularExpressions.Regex.Replace(Test, @"\t|<.*?>", "");
return regexTest;
директиву using dabavljakj nenado.
 

Malchishka

Client
Регистрация
10.11.2011
Сообщения
216
Благодарностей
36
Баллы
28
Большое спасибо всем кто откликнулся, решение от lokiys оказалось полностью рабочим. Это очень упростило работу, т.к. простая регулярка на экшенах из первого поста можно сказать вешала PM, CPU забивался и начиналась пошаговая стратегия, хотя обрабатывалось всего пару строк.
 

RagnarLothbrok

Новичок
Регистрация
27.07.2015
Сообщения
8
Благодарностей
2
Баллы
1
Подскажите пожалуйста, как заменить сниппетом "Обработка текста" - Regex.
Есть переменная (строка текста) из нее надо спарсить регуляркой текст и положить в другие переменные (их много).
Кубиками слишком длинная однотипная колбаса получается :-)

заранее спасибо!
 

RagnarLothbrok

Новичок
Регистрация
27.07.2015
Сообщения
8
Благодарностей
2
Баллы
1
уточню "из нее надо спарсить регуляркой текст", что для каждой переменной своя регулярка
 

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
уточню "из нее надо спарсить регуляркой текст", что для каждой переменной своя регулярка
На пример у на есть контент, который находится в переменной Content, тогда вот так:

Код:
//    -------------------------------------------------------------  //
//    Получаем контент локальной переменной и ложим в перемнную
//    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;
 
Последнее редактирование:

aluminoter

Client
Регистрация
11.02.2015
Сообщения
254
Благодарностей
39
Баллы
28
Да эта констукция работает если у тебя в кубике "Директивы using и общий код" находится вот такое объявление: using System.Text.RegularExpressions;

Если нету, тогда ее добавляем. Но в последних версиях, она прописана по умолчанию.
 
  • Спасибо
Реакции: RagnarLothbrok

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 782
Благодарностей
1 448
Баллы
113
C#:
string Test = "Kakoj to tvoj text";
string regexTest = System.Text.RegularExpressions.Regex.Replace(Test, @"\t|<.*?>", "");
return regexTest;
Ilji jeslji iz project variables togda

C#:
string Test = project.Variables["Test"].Value;
string regexTest = System.Text.RegularExpressions.Regex.Replace(Test, @"\t|<.*?>", "");
return regexTest;
директиву using dabavljakj nenado.
Спасибо огромное выручили, а как поменять ентер на пробел? В кубике это так



а в C# ка это написать??? подскажите пожалуйста
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
("\r\n", " ")
 
  • Спасибо
Реакции: samsonnn

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 782
Благодарностей
1 448
Баллы
113
спасибо я как раз в гугле нашел вот только что, и затестил, зашел на форум и тут ответ еще раз огромное спасибо
 

maxxZEN

Client
Регистрация
18.03.2012
Сообщения
596
Благодарностей
113
Баллы
43
что делать, если регулярка содержит кавычки? Экранирование не помогает.
например регулярка:
Код:
здесь "начинается.*?здесь "заканчивается
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
что начинается. чем заканчивается. ну и хотя бы пример с чего парсим
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 782
Благодарностей
1 448
Баллы
113
что делать, если регулярка содержит кавычки? Экранирование не помогает.
например регулярка:
Код:
здесь "начинается.*?здесь "заканчивается
как это не помогает? Быть такого не может!
вот что делать:
здесь \"начинается.*?здесь \"заканчивается
 

maxxZEN

Client
Регистрация
18.03.2012
Сообщения
596
Благодарностей
113
Баллы
43

samsonnn

Client
Регистрация
02.06.2015
Сообщения
1 782
Благодарностей
1 448
Баллы
113

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
экранирование помогает так
@здесь ""начинается.*?здесь ""заканчивается
 
  • Спасибо
Реакции: maxxZEN

maxxZEN

Client
Регистрация
18.03.2012
Сообщения
596
Благодарностей
113
Баллы
43

keltuzhaknut

Client
Регистрация
24.02.2016
Сообщения
221
Благодарностей
3
Баллы
18
http://joxi.ru/v29lwagIGBYXMm - подскажите как регуляркой сделать замену только в первом, а не во всем?
 

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18
Всем привет помогите разобратся как этот экшен воспроизвести в C#:

13-10-2016 13-01-27.png
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Всем привет помогите разобратся как этот экшен воспроизвести в C#:
C#:
string str = project.Variables["Login_seosprint"].Value;
string pattern = "(?<= [Логин]=).*";
//Если значение логина берется из переменной, то предыдущую строку заменить на
//string login = project.Variables["Login"].Value;
//string pattern = "(?<= [" + login + "]=).*";
Match match = Regex.Match(str, pattern);
if (!match.Success)
    return null;
return match.Value;
 
  • Спасибо
Реакции: xdriver

lokiys

Moderator
Регистрация
01.02.2012
Сообщения
4 812
Благодарностей
1 187
Баллы
113
C#:
string result = Regex.Match(project.Variables["input"].Value, @"Your Regex").Value.ToString();
 
  • Спасибо
Реакции: __Maks

amyboose

Client
Регистрация
21.04.2016
Сообщения
2 312
Благодарностей
1 191
Баллы
113
Вариант без регулярок (берет текст после определенной подстроки)
Код:
string textbefore = "[Login]=";
int k = project.Variables["Login_seosprint"].Value.IndexOf(textbefore, StringComparison.InvariantCultureIgnoreCase);
return (k != -1) ? project.Variables["Login_seosprint"].Value.Substring(k + textbefore.Length) : null;
P.S. если не нужна ошибка при нахождении, вписать вместо null string.Empty
 

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18
C#:
string str = project.Variables["Login_seosprint"].Value;
string pattern = "(?<= [Логин]=).*";
//Если значение логина берется из переменной, то предыдущую строку заменить на
//string login = project.Variables["Login"].Value;
//string pattern = "(?<= [" + login + "]=).*";
Match match = Regex.Match(str, pattern);
if (!match.Success)
    return null;
return match.Value;
Спасибо за ответ но это не то что мне нужно в перемено project.Variables["Login_seosprint"] находится вот такой текст [Логин]=[email protected] мне нужно положить обратно в это же переменую вот этот текст [email protected] регулярное выражения перед искомый текст (?<=\[Логин]=).*
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Спасибо за ответ но это не то что мне нужно в перемено project.Variables["Login_seosprint"] находится вот такой текст [Логин]=[email protected] мне нужно положить обратно в это же переменую вот этот текст [email protected] регулярное выражения перед искомый текст (?<=\[Логин]=).*
Экшен "Обработка текста - Замена", заменить [Логин]= на пустоту.

C#:
string str = project.Variables["Login_seosprint"].Value;
return str.Replace("[Логин]=", "");
 

steklarul

Client
Регистрация
07.09.2016
Сообщения
164
Благодарностей
7
Баллы
18
Экшен "Обработка текста - Замена", заменить [Логин]= на пустоту.

C#:
string str = project.Variables["Login_seosprint"].Value;
return str.Replace("[Логин]=", "");
Dimonix я знаю как работать с стандартными экшенами мне нужно реализовать в c# либо то что ты предлагаеш либо то что я использовал в стандартном вариянте
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Dimonix я знаю как работать с стандартными экшенами мне нужно реализовать в c# либо то что ты предлагаеш либо то что я использовал в стандартном вариянте
А в этом коде что не устраивает?
 

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