Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 18

И снова регулярные выражения, начало строки

11.01.2016, 00:32. Показов 1218. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется подобный текст:

"id":694777727,"text":"Анастасия","votes ":7,"rate":10.140000},{"id":694777728,"t ext":"Виктория","votes":62,"rate":89.860 000}]}}[


Когда знаю полное значение поля text (например, Анастасия), то вытаскиваю поле id вот так:
C#
1
2
3
4
string value1 = "Анастасия";
string patt = string.Format(@"""id"":([\d]+),""text"":""{0}""",value1);
mt = Regex.Match(result, patt); 
pollsIdAnsver = mt.Groups[1].Value;
А как вытащить id, если известно, например, что text начинается с буквы А?
Пробовал комбинации со знаком ^ не выходит.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.01.2016, 00:32
Ответы с готовыми решениями:

И снова регулярные выражения
Привет! Есть у меня программка, которая генерирует xml файлик. Я его распарсил и получил лист, где каждый элемент - строка вида ...

И снова регулярные выражения
Добрый день. Ребята прошу помощи. Есть такой текст: (привожу только малый кусок) listForItem 1 6371 0 0 0 1 7"><font...

ЧПУ. Замена строк, регулярные выражения. Как правильно использовать переменную в регулярные выражения ?
Здравствуйте! Решил реализовать ЧПУ на своем сайте. Первый этап это замена всех реальных ссылок на чпу ссылки. Так вот при замене я...

10
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
11.01.2016, 00:45
C#
1
var mts = Regex.Matches(s, @"(?<=""id""\s*:\s*)\d*(?=\s*,\s*""text""\s*:\s*""А)");
Например так. Но никто в здравом уме что-то подобное писать бы не стал, только любители извращений
1
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 18
11.01.2016, 01:06  [ТС]
Боже) Я думал всё намного проще)
а на месте text здесь что? (text именно в самом выражении)
А то не могу вывести

Добавлено через 6 минут
Всё, понял, затупил

Добавлено через 6 минут
Странно, но выводит пустоту

C#
1
2
foreach (Match m in Regex.Matches(text, @"(?<=""id""\s*:\s*)\d*(?=\s*,\s*""text""\s*:\s*""А)")) 
                richTextBox4.AppendText(""+ m.Value+" "+m.Index);
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
11.01.2016, 01:08
Цитата Сообщение от GlorDev Посмотреть сообщение
Боже) Я думал всё намного проще)
Ну вот именно поэтому для подобных форматов существуют специальные парсеры, заточенные под логику формата. Регулярки же логику формата просто игнорируют.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
11.01.2016, 01:16
json лучше парсить специально предназначеными для этого способами.
0
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 18
11.01.2016, 01:33  [ТС]
В результате колекция Matches пустая почему то
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
11.01.2016, 01:43
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
namespace ConsoleApplication21
{
    class Program
    {
        static void Main(string[] args)
        {
            string s = @"""id"":694777727,""text"":""Анастасия"",""votes"":7,""rate"":10.140000},{""id"":694777728,""text"":""Виктория"",""votes"":62,""rate"":89.860000}]}}[";
            var mts = Regex.Matches(s, @"(?<=""id""\s*:\s*)\d*(?=\s*,\s*""text""\s*:\s*""А)");
            foreach (Match mt in mts) Console.WriteLine(mt.Value);
            Console.Read();
        }
    }
}
Вот так точно работает. Значит текст где-то изменился.
1
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 18
11.01.2016, 01:53  [ТС]
ДА, спасибо большое за помощь_))

Но придумал вариант по короче, крутился вокруг да около)

C#
1
2
3
4
string result = richTextBox3.Text;
            Match mt = Regex.Match(result, @"""id"":([\d]+),""text"":""А[а-яА-Я]+"""); 
            richTextBox4.AppendText(""+mt.Groups[1]);
        }
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
11.01.2016, 01:56
Ну это, собственно, то же самое, только с убранными проверками на пробелы и перевод строки и лишними группами+лишним [а-яА-Я]+"" этим куском.
0
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 18
11.01.2016, 02:10  [ТС]
Хм, а можно объяснить почему
Цитата Сообщение от EvilFromHell Посмотреть сообщение
[а-яА-Я]+""
лишнее? Ведь после буквы А могут идти любые буквы.
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
11.01.2016, 02:16
А какое вам дело до того, что идет после буквы А, если вам по условию важно только то, что А-первая буква?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.01.2016, 02:16
Помогаю со студенческими работами здесь

Регулярные выражения. Строки
Здравствуйте! Я совсем не знаю Java и нет времени разбираться, хочу попросить решить простую задачу по регулярным выражениям: В первом...

Регулярные выражения с новой строки
Есть скрипт в котором используются регулярные выражения . Код: Пример $group...

Разделение строки, регулярные выражения
Как с помощью регулярных выражений в питон можно разделить строку на части? Например имеется строка а =...

Ruby-строки-регулярные выражения
Есть строка. Нужно заменить первую группу букв, в которую входит буква &quot;f&quot; на группу &quot;tree&quot; пробовал следующее, не помогает: ...

регулярные выражения: разбор строки
Бьюсь уже какое время, просто с регулярками до сих пор не очень в ладах... В базе в таблице есть поле, хранящее в себе параметры товара в...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Номеклатура. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru