Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 7

Регулярные выражения

10.02.2015, 09:36. Показов 1513. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток!

Есть входной файл следующего вида:

LL(1)=
30, 30, 14, 20, 18, 18, 18, 18, 18, 18, 20, 23, 21, 27, 18, 12, 22, 18, 18,
18, 12, 12, 21, 24, 22, 21, 18, 18, 18, 18, 18, 21, 36, 62, 20, 20, 20, 20,
20, 20, 30, 30, 30, 22, 12, 21, 18, 22, 34, 17, 52, 21, 34, 30, 30, 46, 18,
INA(1,1)=
1450, 1491, 1538, 1590, 1650, 1651, 1592, 1593, 1594, 1595,
1596, 1597, 1598, 1599, 1600, 1633, 1678, 1680, 1679, 1632,
1631, 1573, 1520, 1519, 1518, 1475, 1454, 1453, 1452, 1451,
INA(1,2)=
1590, 1538, 1589, 1648, 1694, 1734, 1765, 1791, 1817, 1846,
1874, 1906, 1935, 1956, 1957, 1958, 1959, 1938, 1909, 1877,
1849, 1850, 1821, 1822, 1796, 1768, 1737, 1697, 1651, 1650,
INA(1,3)=
2875, 2843, 2878, 2915, 2941, 2963, 2984, 2985, 2986, 2962,
2940, 2913, 2910, 2876,
INA(1,4)=
2919, 2881, 2918, 2942, 2964, 2987, 2989, 3007, 3026, 3045,
3063, 3078, 3077, 3064, 3046, 3027, 3008, 2990, 2966, 2944,
INA(1,5)=
2714, 2678, 2713, 2750, 2779, 2807, 2809, 2837, 2869, 2907,
2937, 2936, 2908, 2870, 2838, 2810, 2781, 2752,
INA(1,6)=
2506, 2531, 2560, 2563, 2564, 2593, 2622, 2657, 2690, 2724,
2725, 2726, 2692, 2659, 2624, 2595, 2566, 2533,
INA(1,7)=
2283, 2280, 2282, 2309, 2333, 2357, 2380, 2405, 2431, 2457,
2456, 2455, 2429, 2403, 2378, 2355, 2334, 2310,

Каким образом лучше извлечь данные в массив? Попытался с помощью регулярных выражений, но имею мало опыта в данной теме
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.02.2015, 09:36
Ответы с готовыми решениями:

Регулярные выражения
Есть строки типа (перечень лесных кварталов, закрепленных за лесхозом) - строка1: 1-5,20-89, 100 - 155 строка2: 6-10,90-99, 155 -...

регулярные выражения
Помогите доделать задачку: В сообщении могут содержаться IP-адреса компьютеров в формате d.d.d.d, где d – целое число из диапазона от 0 до...

Регулярные выражения
Здравствуйте, подскажите, как "сказать" регулярному вырожению, что определенный набор символов - это слово: Regex rx = new...

14
Жуткая тВарЬ
394 / 329 / 135
Регистрация: 06.02.2015
Сообщений: 962
Записей в блоге: 1
10.02.2015, 10:00
Вот пример


C#
1
2
3
4
5
6
7
            string result = "";
            foreach (Match item in Regex.Matches(TEXT, @"\d+(?=,)"))
            {
                result += item.Value + "   |   ";
            }
 
            MessageBox.Show(result);

Так, только там маленький косячОкс, щас исправлю!

Добавлено через 5 минут
Патерн вот такой: @"[^\(]\d+(?=,)"
1
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 7
10.02.2015, 10:22  [ТС]
а если во входном файле есть следующие данные
MC(1,1)=
11665,11666,11650,11653,11652,11667,1166 8,11653,11667,11669,11653,11668,
11669,11654,11653,11670,11654,11669,1167 0,11655,11654,11659,11671,11662,
11660,11671,11659,11660,11672,11671,1166 0,11673,11672,11660,11661,11673,
11671,11674,11662,11675,11664,11663,1167 7,11663,11676,11675,11663,11677,
11675,11678,11664,11678,11665,11664,1167 8,11679,11665,11679,11666,11665,
или
X(1)=
1.400047, 1.400047, 1.400047, 2.148074, 2.200047,
2.680472, 2.972593, 2.400047, 2.993172, 3.000047,
3.951392, 3.823456, 4.179133, 3.821993, 4.600047,
5.252652, 4.800047, 4.600047, 5.958219, 6.600047,
6.000047, 7.330951, 7.737305, 7.858330, 7.200047,
8.507631, 8.676746, 9.332604, 8.225936, 7.400047,
9.947387, 9.400047, 10.457926, 11.181254, 9.343665,
8.257925, 7.400047, 12.023626, 11.860246, 10.590824,
13.187727, 9.196772, 8.000047, 14.647204, 13.830581,
11.939912, 10.809251, 15.531817, 9.412649, 8.000047,
17.270782, 14.842499, 16.331057, 12.662271, 11.109754,
17.923552, 8.000047, 9.500047, 19.894361, 17.063704,
13.389144, 15.778240, 18.441940, 11.000047, 20.115051,
22.666330, 22.029591, 18.904118, 18.167337, 20.335743,
24.202990, 25.409634, 24.164818, 20.556435, 24.109314,
27.296085, 27.516466, 26.300047, 27.607155, 24.849819,
27.414814, 30.333046, 30.155354, 29.400047, 29.143208,
?
0
Жуткая тВарЬ
394 / 329 / 135
Регистрация: 06.02.2015
Сообщений: 962
Записей в блоге: 1
10.02.2015, 11:32
Лучший ответ Сообщение было отмечено nikolay_avid как решение

Решение

@"[^\(]\d+[,.]{0,1}\d*(?=,)" попробуйте должно работать

Добавлено через 1 минуту
[,.] - говорит о том что в качестве разделителя может быть и точка и запятая - но по хорошему лучше оставьте только точку
1
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 7
10.02.2015, 11:42  [ТС]
чтение дробного числа проходит нормально, но вот целые пятизначные читает с запятой(
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
10.02.2015, 11:45
nikolay_avid, попробуй так:
C#
1
2
3
4
5
6
string str = @"...";
List<int[]> Massifs = new List<int[]>();
foreach (Match Match in Regex.Matches(str, @"(?:=)\s*((\d+,\s*)+)"))
{
    Massifs.Add(Match.Groups[1].Value.Replace(" ", "").Split(',').Select(Int32.Parse).ToArray());
}
В Massifs будут все твои массивы (или нужно было все числа в один массив добавлять?).
0
Жуткая тВарЬ
394 / 329 / 135
Регистрация: 06.02.2015
Сообщений: 962
Записей в блоге: 1
10.02.2015, 11:45
я же написал, что лучше заменить [,.] на [.]
в общем попробуй те так @"[^\(]\d+(\.\d*)*(?=,)"
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
10.02.2015, 12:03
nikolay_avid, правда это для целых чисел. Т.к. если будет дробным, то нужно определяться какого типа создавать массив - int или всё же double. Пойду подумаю....

Добавлено через 14 минут
Цитата Сообщение от amarf Посмотреть сообщение
в общем попробуй те так @"[^\(]\d+(\.\d*)*(?=,)"
Не пробуйте так. Подходят и такие выражения: 1.54393939.292929.393939.393939, 2., .3939939 и даже a.83939359.
Если нужно просто регулярка, которая вытащит все числа (целые и дробные) в один массив, то правильнее будет сделать так:
C#
1
2
3
4
5
6
string str = @"...";
List<string> Massive = new List<string>();
foreach (Match Match in Regex.Matches(str, @"\d+\.?\d*"))
{
    Massive.Add(Match.Value);
}
0
Жуткая тВарЬ
394 / 329 / 135
Регистрация: 06.02.2015
Сообщений: 962
Записей в блоге: 1
10.02.2015, 12:13
Цитата Сообщение от BozKurt Посмотреть сообщение
Не пробуйте так. Подходят и такие выражения: 1.54393939.292929.393939.393939, 2., .3939939 и даже a.83939359.
Чует мое сердце вы плохо прочитали патерн.
Во первых в нем есть просмотр вперед и вот такое 2., .3939939 Вы не получите, а вот это a.83939359 тем более,
да есть косяк, но он просто исправляется @"[^\(]\d+(\.\d+){0,1}(?=,)"

Добавлено через 1 минуту
Но по логике не должно быть вот таких чисел 1.54393939.292929.393939.393939 - мы же не произвольный текст разбираем
0
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 7
10.02.2015, 12:18  [ТС]
данные типа
11665,11666,11650,11653,11652,11667,1166 8,11653,11667,11669,11653,11668,
11669,11654,11653,11670,11654,11669,1167 0,11655,11654,11659,11671,11662,
11660,11671,11659,11660,11672,11671,1166 0,11673,11672,11660,11661,11673,
11671,11674,11662,11675,11664,11663,1167 7,11663,11676,11675,11663,11677,
11675,11678,11664,11678,11665,11664,1167 8,11679,11665,11679,11666,11665,
он читает с запятой
0
Жуткая тВарЬ
394 / 329 / 135
Регистрация: 06.02.2015
Сообщений: 962
Записей в блоге: 1
10.02.2015, 12:19
Да и вообще в этой задачи регулярками лучше не пользоваться - если структура входящих данных будет все время такая, то не смысла медленными регулярными выражениями теранить текст, проще выполнить замены и сплитом разбить на значения, исключив название функции по признаку содержания в значении скобок
0
0 / 0 / 0
Регистрация: 10.02.2015
Сообщений: 7
10.02.2015, 12:21  [ТС]
можете пример привести?
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
10.02.2015, 12:22
amarf, с буквенным символом перед точкой я погорячился, а вот перед числом (a13.214234) - отнюдь. Также то, что Ваш паттерн пережёвывает и вот такие значения: .3003, 1.322342.2342342, 1., - это 100%. Вторая (последняя Вами предложенная) ничем не лучше.
0
Жуткая тВарЬ
394 / 329 / 135
Регистрация: 06.02.2015
Сообщений: 962
Записей в блоге: 1
10.02.2015, 12:23
Такие да с запятой, но у старапера данные с пробелом между числами!
Вариант @"(?!<[, ])\d+(\.\d+){0,1}(?=,)"

BozKurt, Короче дело к ночи - давайте помогать человеку а не выяснять кто лучше или хуже. Я Ваши замечания принял к сведению и полностью согласен с ними
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
10.02.2015, 12:32
Действительно, можно пример того, как из текстового файла, в котором по мимо нужных нам чисел, имеется ещё и произвольный текст, вытащить исключительно числа? И будет ли такой метод быстрее предложенного мной вот здесь: Регулярные выражения

Добавлено через 8 минут
Вот готовое решение:
C#
1
2
3
4
5
6
7
8
9
10
11
string str = @"...";
List<string> Massive = new List<string>();
// Перебор всех блоков.
foreach (Match Match in Regex.Matches(str, @"(?:=)\s*(?<block>(\d+\.?\d*,\s*)+)"))
{
    // Перебор всех чисел в блоке.
    foreach (Match number in Regex.Matches(Match.Groups["block"].Value, @"\d+\.?\d*"))
    {
        Massive.Add(Match.Value);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.02.2015, 12:32
Помогаю со студенческими работами здесь

Регулярные выражения
Есть такой текст: &lt;div id=&quot;photos_container&quot; class=&quot;clear_fix&quot;&gt;&lt;div class=&quot;photo_row&quot; id=&quot;photo_row-64876876_373778105&quot;&gt;&lt;a...

Регулярные выражения
Добрый день. Столкнулся с проблемой, у меня есть метод который возвращает совпадение регулярки public static string RegexFilter(string...

Регулярные выражения
Есть тект в стедующем формате: Вопрос в одну или две строки. Обязательно заканчивается '?'. Ответы с новой строки. Каждый ответ с...

Регулярные выражения
string pattern = @&quot;&quot;; Regex regex = new Regex(pattern); if (richTextBox.SelectionStart != 0) { string line = richTextBox.Lines;...

Регулярные выражения
Всем доброго времени суток! Regex.IsMatch(log, &quot;{1,9}$&quot;); Если log = 123 - то ложь и это правильное поведение. Но если log =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru