подскажите код c#

Регистрация
13.04.2016
Сообщения
650
Благодарностей
53
Баллы
28
Подскажите пожалуйста код кто понимает..

необходимо из одного текста регулякрами взять разные значения и разложить по переменным...
вот регулярка:
(?<="товар001",\ "цена":\ ").*?(?="})
ложится в переменную "tovar"

таких регулярок много и все необходимо разложить по своим переменным...

должно быть как то так:

var parse = project.Variables["text"].Value;

var regex = new Regex(?<="товар001",\ "цена":\ ").*?(?="});
положить в переменную 1

var regex = new Regex(?<="товар002",\ "цена":\ ").*?(?="});
положить в переменную 2

var regex = new Regex(?<="товар003",\ "цена":\ ").*?(?="});
положить в переменную 3
.
.
.
.

подскажите рабочий код кому не трудно.
Благодарю!!!
 
Последнее редактирование:

catol

Client
Регистрация
05.07.2012
Сообщения
278
Благодарностей
98
Баллы
28
А что тебе стоит взять регулярку положить все значения в список, а список разложить на переменные.

Берёшь 1ю строку из списка кладёшь в переменную и удаляем и потом снова берёшь первый элемент списка.
 
Регистрация
13.04.2016
Сообщения
650
Благодарностей
53
Баллы
28
А что тебе стоит взять регулярку положить все значения в список, а список разложить на переменные.

Берёшь 1ю строку из списка кладёшь в переменную и удаляем и потом снова берёшь первый элемент списка.
потому что все значения и переменные разные, а их много...
 

catol

Client
Регистрация
05.07.2012
Сообщения
278
Благодарностей
98
Баллы
28
А как тебе такой вариант ты берёшь все переменные в список, а потом ищешь в списке функцией переменную которая содержит название товара.

 
  • Спасибо
Реакции: Анатолий
Регистрация
13.04.2016
Сообщения
650
Благодарностей
53
Баллы
28
А как тебе такой вариант ты берёшь все переменные в список, а потом ищешь в списке функцией переменную которая содержит название товара.

вариант, но выходит очень громоздко.
надеюсь что выйдет в один кубик всё записать, да вот не могу разобраться как сделать и подобного решения не найти.
 

catol

Client
Регистрация
05.07.2012
Сообщения
278
Благодарностей
98
Баллы
28
Есть ещё вариант. Только без списка.

 
  • Спасибо
Реакции: Анатолий

Alex733

Client
Регистрация
27.11.2017
Сообщения
330
Благодарностей
243
Баллы
43
А исходный текст, как выглядит? Может есть проще решение.
 
Регистрация
13.04.2016
Сообщения
650
Благодарностей
53
Баллы
28
Регистрация
13.04.2016
Сообщения
650
Благодарностей
53
Баллы
28

artsmm

Client
Регистрация
03.10.2018
Сообщения
1 136
Благодарностей
196
Баллы
63
Подскажите пожалуйста код кто понимает..

необходимо из одного текста регулякрами взять разные значения и разложить по переменным...
вот регулярка:
(?<="товар001",\ "цена":\ ").*?(?="})
ложится в переменную "tovar"

таких регулярок много и все необходимо разложить по своим переменным...

должно быть как то так:

var parse = project.Variables["text"].Value;

var regex = new Regex(?<="товар001",\ "цена":\ ").*?(?="});
положить в переменную 1

var regex = new Regex(?<="товар002",\ "цена":\ ").*?(?="});
положить в переменную 2

var regex = new Regex(?<="товар003",\ "цена":\ ").*?(?="});
положить в переменную 3
.
.
.
.

подскажите рабочий код кому не трудно.
Благодарю!!!
У меня была похожая задача:
Нужно было разбирать ключевое слово, состоящее из 3,4,5 и 6 отдельных слов на разные слова.
Я тоже не силен в программировании, поэтому решил вопрос так:
1. Брал из списка ключевое слово, затем складывал его как есть в переменную
2. Кодом c# разбирал на отдельные слова и раскладывал их по переменным
Код:
var yourText = project.Variables["list_data"].Value;
project.Variables["key1"].Value = Macros.TextProcessing.Split(yourText," ","0").First();
project.Variables["key2"].Value = Macros.TextProcessing.Split(yourText," ","1").First();
project.Variables["key3"].Value = Macros.TextProcessing.Split(yourText," ","2").First();
project.Variables["key4"].Value = Macros.TextProcessing.Split(yourText," ","3").First();
project.Variables["key5"].Value = Macros.TextProcessing.Split(yourText," ","4").First();
project.Variables["key6"].Value = Macros.TextProcessing.Split(yourText," ","5").First();
project.Variables["key7"].Value = Macros.TextProcessing.Split(yourText," ","6").First();
project.Variables["key8"].Value = Macros.TextProcessing.Split(yourText," ","7").First();
project.Variables["key9"].Value = Macros.TextProcessing.Split(yourText," ","8").First();
project.Variables["key10"].Value = Macros.TextProcessing.Split(yourText," ","9").First();
try {project.Variables["key11"].Value = Macros.TextProcessing.Split(yourText,":","10").First();}
catch (Exception) {}
3. потом по-отдельности все переменные закидывал в нужный список кубиками.
Те в вашем случае, вы шагами 1 и 2 закидываете в переменные значения из регулярных выражений в разные переменные, затем делаете с ними то, что нужно.
Без умения хорошо разбираться в коде, я бы таким путем пошел)
 
  • Спасибо
Реакции: Анатолий

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
381
Баллы
63
При выполнении кода, будут автоматически созданы переменные, в каждую переменную будет положено свое значение(по очереди), переменных будет создано столько сколько совпадений по регулярке.
Код:
var parse = project.Variables["text"].Value;//в этой переменной лежит текст в котором ищем совпадения
var pattern = project.Variables["regex"].Value;//в этой переменной лежит регулярка
int amount = new Regex(pattern).Matches(parse).Count;
for (int i=0; i<amount; i++){
project.Variables.GetType().GetMethod("QuickCreateVariable").Invoke(project.Variables, new Object[]{"tovar"+i});
project.Variables["tovar"+i].Value = new Regex(pattern).Matches(parse)[i].ToString();
}
 
Регистрация
13.04.2016
Сообщения
650
Благодарностей
53
Баллы
28
При выполнении кода, будут автоматически созданы переменные, в каждую переменную будет положено свое значение(по очереди), переменных будет создано столько сколько совпадений по регулярке.
Код:
var parse = project.Variables["text"].Value;//в этой переменной лежит текст в котором ищем совпадения
var pattern = project.Variables["regex"].Value;//в этой переменной лежит регулярка
int amount = new Regex(pattern).Matches(parse).Count;
for (int i=0; i<amount; i++){
project.Variables.GetType().GetMethod("QuickCreateVariable").Invoke(project.Variables, new Object[]{"tovar"+i});
project.Variables["tovar"+i].Value = new Regex(pattern).Matches(parse)[i].ToString();
}
Супер!
Вот это то что нужно!
Благодарю за помощь!!!
 

Igorii

Client
Регистрация
21.02.2015
Сообщения
371
Благодарностей
297
Баллы
63
@Osedjuse, скажите, а как сделать такую узкую панельку? Чёт никак не получается(

upload_2018-11-9_0-15-47.png
 

ТРОН

Client
Регистрация
31.07.2016
Сообщения
336
Благодарностей
381
Баллы
63
  • Спасибо
Реакции: Igorii

serg1208

Client
Регистрация
17.04.2018
Сообщения
331
Благодарностей
15
Баллы
18
При выполнении кода, будут автоматически созданы переменные, в каждую переменную будет положено свое значение(по очереди), переменных будет создано столько сколько совпадений по регулярке.
Код:
var parse = project.Variables["text"].Value;//в этой переменной лежит текст в котором ищем совпадения
var pattern = project.Variables["regex"].Value;//в этой переменной лежит регулярка
int amount = new Regex(pattern).Matches(parse).Count;
for (int i=0; i<amount; i++){
project.Variables.GetType().GetMethod("QuickCreateVariable").Invoke(project.Variables, new Object[]{"tovar"+i});
project.Variables["tovar"+i].Value = new Regex(pattern).Matches(parse)[i].ToString();
}
а как теперь брать значения из этих переменных, если каждый раз их разное кол-во? и как удалять их? Спасибо
 

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