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

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

20.06.2013, 12:22. Показов 1332. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
            Regex dataRegex3 = new Regex(@"Регулярка");
            string str3 = dataRegex3.Match(txt).Groups["data"].Value;
Дайте регулярку для поиска такого вида

Code
1
2
3
                <th>Рейтинг:</th>
                <td>12</td>
                <td></td>
Соответствено надо спарсить число 12,как это сдалать?

Добавлено через 17 часов 17 минут
не знает никто?
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.06.2013, 12:22
Ответы с готовыми решениями:

Регулярное выражение
язык регулярных выражений интерпретируйте следующий шаблон: (\w+)\s(\1) не понимаю как это написать, помогите пожалуйста

Регулярное выражение
Приветствую. Помоги составить регулярное выражение чтобы оно могло определить выражения: c:=a+b; c := a + b; c:=(a+b)*c; Под...

Регулярное выражение
Выделить пользователей с именами, являющимися частью отчества, например: Boris Borisovich. Помогите составить регулярное выражение. ...

10
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
20.06.2013, 12:34
C#
1
@"<td>(\d+)<\/td>"
1
139 / 139 / 39
Регистрация: 26.02.2011
Сообщений: 548
20.06.2013, 13:22  [ТС]
Не помогает.Как спарсить этот рейтинг,уже много чего перепробовал,не берет его и все,подскажите
Пробовал так

C#
1
2
3
4
            string txt = reader3.ReadToEnd();
 
            Regex dataRegex3 = new Regex(@"Рейтинг:</th>\r\t\t\t\t<td>(?<data>.*)</td>");
            string str3 = dataRegex3.Match(txt).Groups["data"].Value;
Вот с этого кода

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<table width="100%" cellspacing="0" cellpadding="0">
<tbody>
    <tr>
        <td style="width:19px">&nbsp;</td>
        <td>
        <table class="user-info-tbl">
            <colgroup>
                <col width="170" />
                <col />
                <col width="20" />
            </colgroup>
            <tbody>
            <tr class="first">
                <th>Рейтинг:</th>
                <td>12</td>
                <td></td>
            </tr>
            <tr>
                <th>Посещаемость:</th>
                <td>43</td>
                <td></td>
            </tr>
                                                <tr>
                <th>Пол:</th>
                <td>Мужской                </td>
                <td>&nbsp;</td>
            </tr>
                                    
            <tr>
                <th>На сайте:</th>
                <td>3 года и 7 месяцев</td>
                <td></td>
            </tr>
            <tr>
                <th>Дата регистрации:</th>
                <td>10.11.2009</td>
                <td></td>
            </tr>
                                                
            
    
</tbody>
</table>
1
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
20.06.2013, 14:01
a.n.o.n.i.m, как НЕ помогает?

Добавлено через 9 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
 
namespace ConsoleApplication6
{
    internal class Program
    {
        private static void Main()
        {
            string res=@"<table width=""100%"" cellspacing=""0"" cellpadding=""0"">
<tbody>
    <tr>
        <td style=""width:19px"">&nbsp;</td>
        <td>
        <table class=""user-info-tbl"">
            <colgroup>
                <col width=""170"" />
                <col />
                <col width=""20"" />
            </colgroup>
            <tbody>
            <tr class=""first"">
                <th>Рейтинг:</th>
                <td>12</td>
                <td></td>
            </tr>
            <tr>
                <th>Посещаемость:</th>
                <td>43</td>
                <td></td>
            </tr>
                                                <tr>
                <th>Пол:</th>
                <td>Мужской                </td>
                <td>&nbsp;</td>
            </tr>
                                    
            <tr>
                <th>На сайте:</th>
                <td>3 года и 7 месяцев</td>
                <td></td>
            </tr>
            <tr>
                <th>Дата регистрации:</th>
                <td>10.11.2009</td>
                <td></td>
            </tr>
                                                
            
    
</tbody>
</table> ";
            
            Console.WriteLine(Regex.Match(res,@"<td>(\d+)<\/td>").Groups[1].Value);
            Console.ReadKey();
        }
    }
}
Выводит - 12!
Другое дело - это то, что у тебя там два совпадения будет, судя по исх. коду. Ячейка же присутствует все равно, даже если рейтинг 0? Поэтому это НЕ критично - у тебя будет находить первую ячейку с числовым значением, а она у тебя отвечает за рейтинг. НО можно еще и привязаться более жестко, и учесть, что ячейка рейтинга может быть пустой -
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
 
namespace ConsoleApplication6
{
    internal class Program
    {
        private static void Main()
        {
            string res=@"<table width=""100%"" cellspacing=""0"" cellpadding=""0"">
<tbody>
    <tr>
        <td style=""width:19px"">&nbsp;</td>
        <td>
        <table class=""user-info-tbl"">
            <colgroup>
                <col width=""170"" />
                <col />
                <col width=""20"" />
            </colgroup>
            <tbody>
            <tr class=""first"">
                <th>Рейтинг:</th>
                <td>12</td>
                <td></td>
            </tr>
            <tr>
                <th>Посещаемость:</th>
                <td>43</td>
                <td></td>
            </tr>
                                                <tr>
                <th>Пол:</th>
                <td>Мужской                </td>
                <td>&nbsp;</td>
            </tr>
                                    
            <tr>
                <th>На сайте:</th>
                <td>3 года и 7 месяцев</td>
                <td></td>
            </tr>
            <tr>
                <th>Дата регистрации:</th>
                <td>10.11.2009</td>
                <td></td>
            </tr>
                                                
            
    
</tbody>
</table> ";
            
            Console.WriteLine(Regex.Match(res,@"Рейтинг:<\/th>\W+<td>(\d+)?<\/td>").Groups[1].Value);
            Console.ReadKey();
        }
    }
}
1
139 / 139 / 39
Регистрация: 26.02.2011
Сообщений: 548
20.06.2013, 16:32  [ТС]
парсит,рейтинг и посещаемость,остальные поля не могу допилить,поможете?

Добавлено через 48 минут
а чем можно вот такую конструкцию заменить покрасивее(покороче) для определения пола
C#
1
@"Пол:<\/th>\W+<td>(.+)?\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s<\/td>"
1
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
21.06.2013, 17:56
@a.n.o.n.i.m, в таком случае наверное лучше все ячейки парсить, чем составлять для каждой - отдельную регулярку -
C#
1
2
string resp="abcd..........";
MatchCollection m=Regex.Matches(resp,@"<td>(.+)<\/td>");
(думаю мысль уловил?)
и уже по номеру смотреть.
1
139 / 139 / 39
Регистрация: 26.02.2011
Сообщений: 548
24.06.2013, 15:45  [ТС]
Ух сложно с регулярками,можно пример?
0
 Аватар для FrostByte
104 / 104 / 19
Регистрация: 23.05.2013
Сообщений: 185
24.06.2013, 20:56
Попробуйте вот так:
C#
1
<td>(?<data>[\w\d\.\s]+)</td>
Из того HTML кода который вы дали спарсит следующее:

Code
1
2
3
4
5
12
43
Мужской
3 года и 7 месяцев
10.11.2009
1
139 / 139 / 39
Регистрация: 26.02.2011
Сообщений: 548
25.06.2013, 10:57  [ТС]
Если поробывать вот так вывести
C#
1
 Console.WriteLine(Regex.Match(res, @"<td>(?<data>[\w\d\.\s]+)</td>").Groups["data"].Value);
То выведет 12 ток
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
25.06.2013, 11:51
HTMLAgilityPack чем не угодил?
http://www.codeplex.com/htmlagilitypack
0
 Аватар для FrostByte
104 / 104 / 19
Регистрация: 23.05.2013
Сообщений: 185
25.06.2013, 12:08
@a.n.o.n.i.m, у меня почемуто выводит только 5 строк. Попробуйте выводить в цикле foreach

C#
1
2
3
4
5
6
7
8
9
10
private static void Main()
    {
        string inpText = File.ReadAllText(@"C:\1.txt", Encoding.Default);
 
        var reg = Regex.Matches(inpText, @"<td>(?<data>[\w\d\.\s]+)</td>");
        foreach (Match match in reg)
        {
            Console.WriteLine(match.Groups["data"].Value);
        }
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.06.2013, 12:08
Помогаю со студенческими работами здесь

Регулярное выражение
Уже битый час ломаю голову, не пойму как в конце написать регулярное выражение 1. Первым символом является либо точка с запятой либо...

Регулярное выражение
Как выдрать значение value и src? (при парсинге, это одна строка) &lt;td colspan=&quot;2&quot;&gt;&lt;input type=&quot;hidden&quot;...

Регулярное выражение
есть строка вида Thread id=&quot;9&quot; time=&quot;3333.438&quot; нужно заменить значение time на своё делаю заменой с помощью регулярки: ...

Регулярное выражение
Не могу разобраться, что означает данное выражение ( - любой символ из скобок, \d - цифра, а вот дальше) \\d+\\d+

Регулярное выражение
Привет, есть регулярное выражение. private Regex CreateRegex(string source) { // Perform...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru