не работает регулярка

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
Подскажите, что я опять делаю не так

// Получаем контент локальной переменной и ложим в перемнную content
var content = project.Variables["dom__2"].Value;

var regex = @"(?<=\[TEXT_KEYMINI_).*?(?=\])";
project.Variables["b_13"].Value = Regex.Match(content, regex).Value;
через кубики работает регулярка, а в c# нет

вот эта строка "<br />[TEXT_KEYMINI_200_R]</div>"

должно положиться в переменную b_13 "200_R"
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
C#:
var reg = "(?<=\\[TEXT_KEYMINI_).*?(?=\\])";
var data = "<br />[TEXT_KEYMINI_200_R]</div>";
var rez = Regex.Match(data, reg).Value;
upload_2016-7-21_22-1-5.png
 
  • Спасибо
Реакции: piarche

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
C#:
var reg = "(?<=\\[TEXT_KEYMINI_).*?(?=\\])";
var data = "<br />[TEXT_KEYMINI_200_R]</div>";
var rez = Regex.Match(data, reg).Value;
Посмотреть вложение 14619
а в чем прикол, чет никак не пойму, так работает, "(?<=\\[TEXT_KEYMINI_).*?(?=\\])" а что это за экранирование \\ - где про это написано?

код выше тоже отсюда брал
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
@"(?<=\[TEXT_KEYMINI_).*?(?=\])" почему так работает через раз
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
мб @ ?
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
извиняюсь за назойливость, но \\ где про это написано, я уже совсем запутался, как правильно экранировавать в регулярке?
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
А еще вопрос

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

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
project.Variables["b_13"].Value = project.Variables["b_13"].Value.Replace(tmp,"");
вот допустим, в переменной "tmp" регулярка ничего не положила
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
похоже чет у меня, то нормально все работает, нажимаешь выполнить выполнить выполнить, а потом раз и ничего не выполняется, закрываешь программу запускаешь заново и все опять работает
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
это какой-то вынос мозга, регулярка в c# работает через раз, запускаешь одно значение возьмет другое нет, потом опять запускаешь еще несколько возьмет несколько нет, еще запускаешь и так пока все не соберет

почему так? почему когда хочет пропустит когда захочет возьмет?

перешел обратно на кубики стандартные

на c# переходить только в необходимых случаях?
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
или может надо какую нибудь чистку делать или еще что-то? Посоветуйте Гуру зеннопостера
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
или может надо какую нибудь чистку делать или еще что-то? Посоветуйте Гуру зеннопостера
ну так кинь тело и покажи что именно не берёт твоей регуляркой ну и соответственно свою регулярку
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
вот это

пытался превратить вот в это, чисто в учебных целях, найти надо [TEXT_KEYMINI_350_R], думаю ошибка не в регулярке, а в цикле
// Получаем контент локальной переменной и ложим в перемнную content
string content = project.Variables["dom__2"].Value;
// список с 0 и 1
var list = project.Lists["Список 6"];

project.Variables["vr__1"].Value = "0";
string regex;
int vr__2;
Random rnd=new Random();

//Тут создаём нужное условие
for(;;-) {


regex = @"(?<=\[TEXT_KEYMINI_).*?(?=\])"; вот это находит через раз
project.Variables["b_13"].Value = Regex.Match(content, regex).Value;

regex = @"(?<=_).*";
project.Variables["b_18"].Value = Regex.Match(project.Variables["b_13"].Value, regex).Value;

if (project.Variables["b_18"].Value == "R")
project.Variables["b_13"].Value = project.Variables["b_13"].Value.Replace("_" + project.Variables["b_18"].Value,"");


vr__2 = rnd.Next(0, list.Count);из списка берем рандомное число 1 или 0, по другому чет не получается нормально


if (project.Variables["b_18"].Value == "R") {
if (vr__2 == 0) {content = content.Replace("[TEXT_KEYMINI_" + project.Variables["b_13"].Value + "_R]",""); }возвращаемся в начало цикла (думаю где-то здесь ошибка)
else {project.Variables["vr__2"].Value = project.Variables["b_13"].Value; }}
else {project.Variables["vr__2"].Value = project.Variables["b_13"].Value; }

if (project.Variables["vr__2"].Value == "") { return null; }выходим по пунктирной из кубика
else {project.Variables["b_17"].Value = "0"; project.Variables["dom__2"].Value = content; break;}выходим из цикла и из кубика
}
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
смайлик сам нарисовался, for(;;;
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
решил через goto, но все пишут что это не правильно из за путаницы,
// Получаем контент локальной переменной и ложим в перемнную content
string content = project.Variables["dom__2"].Value;
// список с 0 и 1
var list = project.Lists["Список 6"];

project.Variables["vr__1"].Value = "0";
string regex;
int vr__2;
Random rnd=new Random();

//Тут создаём нужное условие
for(;;-) {

Link:

regex = @"(?<=\[TEXT_KEYMINI_).*?(?=])";
project.Variables["b_13"].Value = Regex.Match(content, regex).Value;

regex = @"(?<=_).*";
project.Variables["b_18"].Value = Regex.Match(project.Variables["b_13"].Value, regex).Value;

if (project.Variables["b_18"].Value == "R")
project.Variables["b_13"].Value = project.Variables["b_13"].Value.Replace("_" + project.Variables["b_18"].Value,"");


vr__2 = rnd.Next(0, list.Count);


if (project.Variables["b_18"].Value == "R") {
if (vr__2 == 0) {content = content.Replace("[TEXT_KEYMINI_" + project.Variables["b_13"].Value + "_R]",""); goto Link;}
else {project.Variables["vr__2"].Value = project.Variables["b_13"].Value; }}
else {project.Variables["vr__2"].Value = project.Variables["b_13"].Value; }

if (project.Variables["vr__2"].Value == "") { return null; }
else {project.Variables["b_17"].Value = "0"; project.Variables["dom__2"].Value = content; break;}
}
вроде удобно
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
короче выходило по этой строке if (project.Variables["vr__2"].Value == "") { return null; }

но как сделать правильно эту часть? не через goto Link;
if (project.Variables["b_18"].Value == "R") {
if (vr__2 == 0) {content = content.Replace("[TEXT_KEYMINI_" + project.Variables["b_13"].Value + "_R]",""); goto Link;}
else {project.Variables["vr__2"].Value = project.Variables["b_13"].Value; }}
else {project.Variables["vr__2"].Value = project.Variables["b_13"].Value; }

if (project.Variables["vr__2"].Value == "") { return null; }
else {project.Variables["b_17"].Value = "0"; project.Variables["dom__2"].Value = content; break;}
}
вот она
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
нет, не вылечил, опять пропуски

и совершенно одинаковая последовательность рандома, при генерации текста, допустим 20 блоков по 100 символов, у всех значение рандомно удалять блок или нет, удаляется постоянно одно и тоже на каждой странице, например блоки: 3,4,7,8,13,15,18

уже много чего перепробовал
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
чет я туплю, и текст везде одинаковый, пошел разбираться где опять КОСЯК
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
Зачем вы пытаетесь перевести все на C# если недостаточно знаний + все это уже сделано на кубиках?
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
Зачем вы пытаетесь перевести все на C# если недостаточно знаний + все это уже сделано на кубиках?
я просто пробую и учусь, теперь понимаю что очень мало знаний,

а еще понял, что "нехрена" лезть в с# если можно все на кубиках делать, только в крайних случаях, + хоть немного теперь понимаю где и что там в коде c# и как переменные вставлять в код, а то спрашиваю тут как что нибудь сделать вы кидаете кубик и сидишь как дурак "че это такое мне дали"

все только в учебных целях
 

piarche

Пользователь
Регистрация
28.04.2015
Сообщения
141
Благодарностей
5
Баллы
18
а еще зенка все больше и больше меня радует, это просто чудо какое-то
 
  • Спасибо
Реакции: rostonix

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