Как парсить по номеру совпадений Regex.Match

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
Из файла регуляркой нужно выпарсить по номеру совпадения. Куда тут нужно вписать номер совпадения?
Код:
int num = 1;
test = System.Text.RegularExpressions.Regex.Match(text, @"регулярка+"+num+@"регулярка").Value;
Пробовал так +num+@"регулярка", 1).Value; ошибка, но если ставить 0 то берет первое совпадение.

Подскажите что и куда нужно дописать чтобы брало по номеру совпадения))))) :-)
 
Последнее редактирование:

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
так попробуй num.ToString()
Вы меня не так поняли. int num тут совсем не причем, он нужен в регулярке.
Вопрос другой, что тут нужно прописать чтобы например регулярка брала по 1 номеру совпадения а не 0?
Код:
test = System.Text.RegularExpressions.Regex.Match(text, @"регулярка+"+num+@"регулярка").Value;
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113
ssXXXss, ему надо все совпадения в массив и получить там номер 1 допустим...
preg_match_all в пхп как я понял.
 

ssXXXss

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

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
выпарси из файла все совпадения в список не привязанный или в переменную и возьми первую строку, если сейчас правильно понял, а так немного не понимаю что к чему
Ну зачем в список)) Пример.
тексттексттекст
тексттексттекст
тексттексттекст

Как получить втрое совпадение, 3 и.т.д... Что в этом коде нужно добавить или изменить
System.Text.RegularExpressions.Regex.Match(text, @"регулярка").Value;

Щас по умолчанию берет первое совпадение.
 

ssXXXss

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

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
из примера по регулярке видно что текст лежит в переменной а не в файле, в переменой считается одной строкой, тебе надо выпарсить построчно в список и взять твою строку которую тебе надо
Да как еще построчно выпарсить в список если всегда берется одна и та же строка??? Я запутался... Оказывается в список можно выпарсить построчно, а мне в переменную получить вторую строку нельзя???? Е что то не уловляю........
 

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
Вот в экшине regex можно а в C# не можно????
2015-11-22_185612.jpg
 

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
В список парсится если нужно парсить всё, а мне одно совпадение нужно. Причем тут список не пойму.
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113
В список парсится если нужно парсить всё, а мне одно совпадение нужно. Причем тут список не пойму.
Потому что по другому никак... это везде так регулярка кладет в массив все или первое совпадение )
 

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
Тока так тогда?
var parse = project.Variables["parse"].Value;
var regex = new Regex("регулярка");
var zp_list = project.Lists["Список 1"];

regex.Matches(parse).Cast<Match>().ToList().ForEach(m=>zp_list.Add(m.Value));
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
Что ужас? В языках программирования есть или первое совпадение или ВСЕ. Тоже сделано в зенке к стате...
Как тогда этот экшин берет второе совпадение? Может в массив ложит предварительно? Может тоже можно в массив замутить?)))))
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113
Как тогда этот экшин берет второе совпадение? Может в массив ложит предварительно? Может тоже можно в массив замутить?)))))
Распишите на пальцах что делает это выражение, я не силен в c#
 

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
Ладно попозже поищу инфу про массивы, может можно вместо списка положить в массив а уже оттуда доставать по одному)))
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113
Ладно попозже поищу инфу про массивы, может можно вместо списка положить в массив а уже оттуда доставать по одному)))
Да все банально создайте 2й список и перекидывайте что вам надо в 1й...
 

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113
Вы нормальный пример приведите и что оттуда надо получить... пока понятно, что вы нормально вопрос задать даже не могёте :(
 

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28

ssXXXss

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

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
из файла или всё таки из переменой или из массива или из листа, в переменной строки или контент???
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
Как тогда этот экшин берет второе совпадение? Может в массив ложит предварительно? Может тоже можно в массив замутить?)))))
и то что этот экшен делает вам откуда знать его внутренний код ??? он тоже само делает что в С# написать в одном кубике
 

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
из файла или всё таки из переменой или из массива или из листа, в переменной строки или контент???
Из переменной, которая в себе содержит текст удовлетворяющий регулярном выражении. Совпадений несколько, нужно взять любое одно совпадение и положить в переменную. В переменной строки.
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113
http://www.cyberforum.ru/csharp-beginners/thread244709.html - получаем массив
https://msdn.microsoft.com/ru-ru/library/7eddebat(v=vs.110).aspx - получить элемент из массива
Ну как то так наверное:
Код:
string pattern = @"не";
string text = "не может быть";
Regex newReg = new Regex(pattern); 
MatchCollection matches = newReg.Matches(text);
string blabla=matches[2];
P.S. не пишу на C#
 
  • Спасибо
Реакции: proffman

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
можешь конечно так, но не зная сколько совпадений и если взять число большее чем совпадений то выдаст ошибку
Код:
string pattern = @"не\d.*?";
string text = "не1 может не2 быть не3 всегда";
Regex newReg = new Regex(pattern);
MatchCollection matches = newReg.Matches(text);
return matches[2];
 
  • Спасибо
Реакции: proffman

proffman

Client
Регистрация
24.01.2013
Сообщения
547
Благодарностей
51
Баллы
28
можешь конечно так, но не зная сколько совпадений и если взять число большее чем совпадений то выдаст ошибку
Код:
string pattern = @"не\d.*?";
string text = "не1 может не2 быть не3 всегда";
Regex newReg = new Regex(pattern);
MatchCollection matches = newReg.Matches(text);
return matches[2];
Ну вот, как раз то что надо))))) Проблем с совпадениями не возникнет, заранее буду знать количество совпадений. Спасибо!!!!))))) :-):az::ay:
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 518
Благодарностей
990
Баллы
113
Ну вот, как раз то что надо))))) Проблем с совпадениями не возникнет, заранее буду знать количество совпадений. Спасибо!!!!))))) :-):az::ay:
Дык вся проблема была в matches[2];
Я ж вам сразу написал получаешь всё - выбираешь нужный элемент из массива :-)
 
  • Спасибо
Реакции: proffman

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