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

  • Автор темы Автор темы sibbora
  • Дата начала Дата начала

sibbora

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

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

В экшенах это выглядело бы так:
p3Gmla0ep
 
Что-то не получается у меня выполнить код выше. Закидываем в блок C# код

Код:
Развернуть Свернуть Копировать
strDescription = System.Text.RegularExpressions.Regex.Replace(strDescription, @"\t|<.*?>", "");

Предварительно поменяв "strDescription" на название своей переменной из которой берём текст и в которую его потом перезаписывам.

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

Код:
Развернуть Свернуть Копировать
Test = System.Text.RegularExpressions.Regex.Replace(Test, @"\t|<.*?>", "");

Переменная Test существует и в ней есть текст, который нужно обработать, но при выполнении экшена я получаю следующее:

9a3124a92306d88459aae99f39721dca.png


Где я допустил ошибку?
 
директиву using добавить нужно
 

Вложения

  • 777.jpg
    777.jpg
    336,4 KB · Просмотры: 429
  • Оценить
Реакции: Malchishka
Что-то не получается у меня выполнить код выше. Закидываем в блок C# код

Код:
Развернуть Свернуть Копировать
strDescription = System.Text.RegularExpressions.Regex.Replace(strDescription, @"\t|<.*?>", "");

Предварительно поменяв "strDescription" на название своей переменной из которой берём текст и в которую его потом перезаписывам.

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

Код:
Развернуть Свернуть Копировать
Test = System.Text.RegularExpressions.Regex.Replace(Test, @"\t|<.*?>", "");

Переменная Test существует и в ней есть текст, который нужно обработать, но при выполнении экшена я получаю следующее:

9a3124a92306d88459aae99f39721dca.png


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


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.
 
Большое спасибо всем кто откликнулся, решение от lokiys оказалось полностью рабочим. Это очень упростило работу, т.к. простая регулярка на экшенах из первого поста можно сказать вешала PM, CPU забивался и начиналась пошаговая стратегия, хотя обрабатывалось всего пару строк.
 
Подскажите пожалуйста, как заменить сниппетом "Обработка текста" - Regex.
Есть переменная (строка текста) из нее надо спарсить регуляркой текст и положить в другие переменные (их много).
Кубиками слишком длинная однотипная колбаса получается :)

заранее спасибо!
 
уточню "из нее надо спарсить регуляркой текст", что для каждой переменной своя регулярка
 
уточню "из нее надо спарсить регуляркой текст", что для каждой переменной своя регулярка

На пример у на есть контент, который находится в переменной 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;
 
Последнее редактирование:
Да эта констукция работает если у тебя в кубике "Директивы using и общий код" находится вот такое объявление: using System.Text.RegularExpressions;

Если нету, тогда ее добавляем. Но в последних версиях, она прописана по умолчанию.
 
  • Оценить
Реакции: RagnarLothbrok
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.

Спасибо огромное выручили, а как поменять ентер на пробел? В кубике это так

qxZHG.jpg


а в C# ка это написать??? подскажите пожалуйста
 
что делать, если регулярка содержит кавычки? Экранирование не помогает.
например регулярка:
Код:
Развернуть Свернуть Копировать
здесь "начинается.*?здесь "заканчивается
 
что начинается. чем заканчивается. ну и хотя бы пример с чего парсим
 
что делать, если регулярка содержит кавычки? Экранирование не помогает.
например регулярка:
Код:
Развернуть Свернуть Копировать
здесь "начинается.*?здесь "заканчивается
как это не помогает? Быть такого не может!
вот что делать:
здесь \"начинается.*?здесь \"заканчивается
 
экранирование помогает так
@здесь ""начинается.*?здесь ""заканчивается
 
  • Оценить
Реакции: maxxZEN
http://joxi.ru/v29lwagIGBYXMm - подскажите как регуляркой сделать замену только в первом, а не во всем?
 
Всем привет помогите разобратся как этот экшен воспроизвести в C#:

13-10-2016 13-01-27.png
 
Всем привет помогите разобратся как этот экшен воспроизвести в 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
Вариант без регулярок (берет текст после определенной подстроки)
Код:
Развернуть Свернуть Копировать
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
 
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"] находится вот такой текст [Логин]=timbala@inbox.ru мне нужно положить обратно в это же переменую вот этот текст timbala@inbox.ru регулярное выражения перед искомый текст (?<=\[Логин]=).*
 
Спасибо за ответ но это не то что мне нужно в перемено project.Variables["Login_seosprint"] находится вот такой текст [Логин]=timbala@inbox.ru мне нужно положить обратно в это же переменую вот этот текст timbala@inbox.ru регулярное выражения перед искомый текст (?<=\[Логин]=).*
Экшен "Обработка текста - Замена", заменить [Логин]= на пустоту.

C#:
Развернуть Свернуть Копировать
string str = project.Variables["Login_seosprint"].Value;
return str.Replace("[Логин]=", "");
 
Экшен "Обработка текста - Замена", заменить [Логин]= на пустоту.

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

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