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

Регулярки

14.10.2018, 21:10. Показов 1345. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Прошу помощи, не могу понять как правильно написать регулярку на парсинг строк
Имеем вот такую строку:
Accepted amount: 24000.00 RUR (+24000.00) RUR
На выходе должно получиться так:
Accepted amount: 24 000 Руб
В исходной строке может меняться номинал и длина символов. Как спарсить значение именно в скобках?

C#
1
2
3
4
5
6
7
string pattern = @"Accepted amount: " + @"\w[0-9]";
            string input = text_editor.Text;
            MatchCollection collection = Regex.Matches(input, pattern);
            foreach (Match m in collection)
            {
                data_parces.AppendText(m.Value + "\n");
            }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.10.2018, 21:10
Ответы с готовыми решениями:

Регулярки
Народ,помогите кто чем как говориться,пишу парсер,никак не могу посреди ночи темной додумать как описать подстроку внутри которой может...

StringBuilder и регулярки
Подскажите, можно ли на StringBuilder использовать RegEx.Replace? Если да, то как?

Грамотное построение регулярки
Собственно сабж. До этого как-то особо этим не интересовался, находились другие дела, а тут прям проперло. Пример: есть строка Я...

7
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
15.10.2018, 17:19
r3200b,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Globalization;
using System.Text.RegularExpressions;
 
namespace Question2334367
{
    class Program
    {
        static void Main(string[] args)
        {
            var str = "Accepted amount: 24000.00 RUR (+24000.00) RUR";
            var tmp = Regex.Match(str, @"RUR \(([^)]+)\) RUR").Groups[1].Value;
 
            decimal amount = decimal.Parse(tmp, CultureInfo.GetCultureInfo("en-us"));
            var str2 = $"Accepted amount: {amount.ToString("N0")} Руб";
            Console.WriteLine(str2);
            Console.ReadKey();
        }
    }
}
Непонятно, что с копейками делать. Здесь они не выводятся.
1
7 / 5 / 2
Регистрация: 26.08.2017
Сообщений: 74
15.10.2018, 21:49  [ТС]
Идею понял, спасибо.
Далее с полученными данными нужно будет работать, совсем из головы вылетело что валюта будет разная, поэтому необходимость переводить с RUR на Руб отпала. Тем не менее пригодиться, спасибо.

У меня пока вот что получается.
C#
1
2
3
4
5
6
7
8
9
10
11
private void text_editor_TextChanged(object sender, EventArgs e)
        {
            data_parces.Clear();
            string pattern = @"Accepted amount: " + @"\d{1,10}" + @"\." + @"\d{2}" + @"\D{4}";
            string input = text_editor.Text;
            MatchCollection collection = Regex.Matches(input, pattern);
            foreach (Match m in collection)
            {
                data_parces.AppendText(m.Value + "\n");
            }
        }
Понятно что выглядит далеко не идеально, ну вроде работает (для начала).
Изучив курс молодого бойца и перелопатив интернет пока нигде не могу подробного мануала по регулярным выражениям найти для
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
15.10.2018, 22:01
Лучший ответ Сообщение было отмечено r3200b как решение

Решение

r3200b, http://learn.javascript.ru/reg... javascript нужно выучить и прорешать.
Пригодится во всех языках программирования.
1
7 / 5 / 2
Регистрация: 26.08.2017
Сообщений: 74
17.10.2018, 20:47  [ТС]
amr-now, Спасибо большое за ссылку, даже немного почитав уже нашёл довольно много ответов на свои вопросы.
Правда про многострочный режим там мало информации, придется копать дальше.
0
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
17.10.2018, 21:58
r3200b, учти, что javascript regex чуть урезанный по сравнению со стандартом (PCRE).
https://web.archive.org/web/20... avors.html
1
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
17.10.2018, 22:16
r3200b, nicolas2008,
в свежих версиях JavaScript добавили:
- именованные группы,
- позитивный и негативный look behind (позитивный и негативный look ahead уже был),
- классы Unicode-символов, например, \p{M}
- Однострочный ключ s.

Как и в PHP, в JS присутствуют косяки с русскими буквами в \w и \b, но обход проблемы разминает мозги.

Нет рекурсивных регулярок, но и о костылях из NET Framework слышали несколько человек в мире.
1
7 / 5 / 2
Регистрация: 26.08.2017
Сообщений: 74
18.10.2018, 21:38  [ТС]
Цитата Сообщение от amr-now Посмотреть сообщение
- именованные группы,
Аккурат сейчас запланировал сесть за изучение данной темы, нужно теперь группировать все.
Цитата Сообщение от amr-now Посмотреть сообщение
- классы Unicode-символов, например, \p{M}
Хм, интересный pattern, будем экспериментировать. Спасибо!

Добавлено через 1 минуту
Цитата Сообщение от nicolas2008 Посмотреть сообщение
учти, что javascript regex чуть урезанный по сравнению со стандартом (PCRE).
https://web.archive.org/web/20... avors.html
Спасибо, вот это действительно полезная ссыль. Неплохо было бы добавить в ветку для новичков, сэкономило бы много времени.

Добавлено через 10 минут
Я тут уже нагородил забор

C#
1
2
3
4
5
string pattern = "=" + "CASH" + "=" + "\n" +
                                    @"\d{2}-\d{2}-\d{2}\|\d{2}:\d{2}:\d{2}\n" +
                                    TextBox1.Text + @"\|\d\..\d{4}\|\d+\n" +
                                    "CODE: " + @"\d+\n" +
                                    @"\d+\.\d{2}";
В таком вот виде работает/
Однако когда первую строчку записываю в таком виде перестает работать.
C++
1
@"=\[CASH]\=\n"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.10.2018, 21:38
Помогаю со студенческими работами здесь

Увеличение скорости парсинга регулярки,возможно ли?
Собственно есть регулярка,нужно парсить id и имя клана Впринципе он парсит,но на странице окло 40 кланов, всего 13 страниц и в среднем на...

Портирование регулярки
Здравствуйте! Есть одна регулярка, которую мне помог написать один хороший человек. Она прекрасно работает -...

Опять регулярки
Есть строка из неё надо спарсить значения, вот строка: Я составил такую регулярку: string search_me =...

Регулярки, запретить вложенность
Добрый день. Например, есть текст string Text = "start первая регулярка end start вторая end start третья end start четвёрая end ...

Регулярки: ищу учебник
есть ли где то не просто справочник по конструкциям регулярок, но учебник полноценный? не только с примерами, но и с задачами с описанным...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru