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

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

proffman

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

Пробовал так +num+@"регулярка", 1).Value; ошибка, но если ставить 0 то берет первое совпадение.

Подскажите что и куда нужно дописать чтобы брало по номеру совпадения))))) :-)
 
Последнее редактирование:
так попробуй num.ToString()
Вы меня не так поняли. int num тут совсем не причем, он нужен в регулярке.
Вопрос другой, что тут нужно прописать чтобы например регулярка брала по 1 номеру совпадения а не 0?
Код:
Развернуть Свернуть Копировать
test = System.Text.RegularExpressions.Regex.Match(text, @"регулярка+"+num+@"регулярка").Value;
 
ssXXXss, ему надо все совпадения в массив и получить там номер 1 допустим...
preg_match_all в пхп как я понял.
 
выпарси из файла все совпадения в список не привязанный или в переменную и возьми первую строку, если сейчас правильно понял, а так немного не понимаю что к чему
 
выпарси из файла все совпадения в список не привязанный или в переменную и возьми первую строку, если сейчас правильно понял, а так немного не понимаю что к чему
Ну зачем в список)) Пример.
тексттексттекст
тексттексттекст
тексттексттекст

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

Щас по умолчанию берет первое совпадение.
 
из примера по регулярке видно что текст лежит в переменной а не в файле, в переменой считается одной строкой, тебе надо выпарсить построчно в список и взять твою строку которую тебе надо
 
из примера по регулярке видно что текст лежит в переменной а не в файле, в переменой считается одной строкой, тебе надо выпарсить построчно в список и взять твою строку которую тебе надо
Да как еще построчно выпарсить в список если всегда берется одна и та же строка??? Я запутался... Оказывается в список можно выпарсить построчно, а мне в переменную получить вторую строку нельзя???? Е что то не уловляю........
 
Вот в экшине regex можно а в C# не можно????
2015-11-22_185612.jpg
 
В список парсится если нужно парсить всё, а мне одно совпадение нужно. Причем тут список не пойму.
 
В список парсится если нужно парсить всё, а мне одно совпадение нужно. Причем тут список не пойму.
Потому что по другому никак... это везде так регулярка кладет в массив все или первое совпадение )
 
Тока так тогда?
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));
 
Что ужас? В языках программирования есть или первое совпадение или ВСЕ. Тоже сделано в зенке к стате...
Как тогда этот экшин берет второе совпадение? Может в массив ложит предварительно? Может тоже можно в массив замутить?)))))
 
Как тогда этот экшин берет второе совпадение? Может в массив ложит предварительно? Может тоже можно в массив замутить?)))))
Распишите на пальцах что делает это выражение, я не силен в c#
 
Ладно попозже поищу инфу про массивы, может можно вместо списка положить в массив а уже оттуда доставать по одному)))
 
Ладно попозже поищу инфу про массивы, может можно вместо списка положить в массив а уже оттуда доставать по одному)))
Да все банально создайте 2й список и перекидывайте что вам надо в 1й...
 
из файла или всё таки из переменой или из массива или из листа, в переменной строки или контент???
 
Как тогда этот экшин берет второе совпадение? Может в массив ложит предварительно? Может тоже можно в массив замутить?)))))
и то что этот экшен делает вам откуда знать его внутренний код ??? он тоже само делает что в С# написать в одном кубике
 
из файла или всё таки из переменой или из массива или из листа, в переменной строки или контент???
Из переменной, которая в себе содержит текст удовлетворяющий регулярном выражении. Совпадений несколько, нужно взять любое одно совпадение и положить в переменную. В переменной строки.
 
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
можешь конечно так, но не зная сколько совпадений и если взять число большее чем совпадений то выдаст ошибку
Код:
Развернуть Свернуть Копировать
string pattern = @"не\d.*?";
string text = "не1 может не2 быть не3 всегда";
Regex newReg = new Regex(pattern);
MatchCollection matches = newReg.Matches(text);
return matches[2];
 
  • Оценить
Реакции: proffman
можешь конечно так, но не зная сколько совпадений и если взять число большее чем совпадений то выдаст ошибку
Код:
Развернуть Свернуть Копировать
string pattern = @"не\d.*?";
string text = "не1 может не2 быть не3 всегда";
Regex newReg = new Regex(pattern);
MatchCollection matches = newReg.Matches(text);
return matches[2];
Ну вот, как раз то что надо))))) Проблем с совпадениями не возникнет, заранее буду знать количество совпадений. Спасибо!!!!))))) :-):az::ay:
 
Ну вот, как раз то что надо))))) Проблем с совпадениями не возникнет, заранее буду знать количество совпадений. Спасибо!!!!))))) :-):az::ay:
Дык вся проблема была в matches[2];
Я ж вам сразу написал получаешь всё - выбираешь нужный элемент из массива :)
 
  • Оценить
Реакции: proffman

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