Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
17 / 17 / 4
Регистрация: 19.06.2014
Сообщений: 85

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

03.07.2014, 15:31. Показов 2155. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private void button4_Click(object sender, EventArgs e)
        {
            string a;
            //текст для поиска
            a = @"<tr bgcolor=#e7ffe7> 
<td class=wbt valign=top><nobr>13:11</nobr></td><td class=wbt valign=top>35</td><td class=wbt>налетай,торопись</td><td class=wbt valign=top align=center>11 x 11</td>
<td class=wbt valign=top align=center><nobr><font color=red>5-16</font> vs <font color=blue>5-16</font></nobr></td><td class=wb ><font color=blue>-</font></td><td class=wb ><font color=blue>-</font></nobr></td><td class=wbt valign=top><a href=/info.php?id=2115809 class=g  title='Jackhammer (4, 1)
РКГ-3
HP: 172 / 172'>puzik0 [16]</a>, <a href=/info.php?id=1859532 class=g  title='Револьвер ковбоя (11, 0)
HP: 190 / 190'>Констаночка[16]</a>, <a href=/wargroup.php?war=armed&my=2186221&join=390384379&side=1&jkey=8b44d8e6a7e931dc55582e43a786cc50 class=g><u>[вступить]</u></a></td>
</tr>";
            string RegexPattern = "</font>(</nobr>|)</td><td class=wbt valign=top>[^#]+href=/wargroup"; //паттерн
            System.Text.RegularExpressions.MatchCollection matches = System.Text.RegularExpressions.Regex.Matches(a, RegexPattern, RegexOptions.IgnoreCase); //ищем
            label2.Text = matches.Count.ToString(); //выводим количество найденых совпадений
        }
Вопрос - чем в паттерне
string RegexPattern = "</font>(</nobr>|)</td><td class=wbt valign=top>[^#]+href=/wargroup";
можно заменить вот эту часть [^#]+
данный вариант не устраивает, тк это костыль и может случится ситуация, когда решетка все таки появится в этой части текста и я ничего не найду.
Мне нужен паттерн который бы грубо говоря заменил любой текст, а не [^#]+ любой текст кроме решетки

уж простите но перелопатил все эскейп последовательности и не могу ничего составить, во всех более менее подходящих вариантах получается - все кроме пробела | знака перехода строки | и т.д,
всегда если все то обязательно кроме чего то, а мне надо чтобы было именно все пока не встречу href=/wargroup
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.07.2014, 15:31
Ответы с готовыми решениями:

Регулярные выражения - вывод сообщения об ошибке при нахождении в строке выражения, начинающегося с цифры
Нужно чтобы при нахождении в строке выражения начинающегося с цифры появлялось сообщение об ошибке,например если ввести :2a,то будет...

Регулярные выражения
Помогите пожалуйста составить регулярное выражение. В общем есть html код в нем есть строка &lt;input value=&quot;1234567890&quot; ........

регулярные выражения.
Здравствуйте. Подскажите, пожалуйста, какое регулярное выражение использовать, чтобы проверить имеет ли данная строка вид: только цифр...

13
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
03.07.2014, 18:03
Цитата Сообщение от naJlaguH Посмотреть сообщение
может случится ситуация, когда решетка все таки появится
Цитата Сообщение от naJlaguH Посмотреть сообщение
любой текст кроме решетки
Как бы противоречие.
Любой текст (символ, кроме '\n') - это точка, но вряд ли она подойдёт. Лучше расскажи, что именно нужно получить из предоставленной строки: от куда, до куда?
0
17 / 17 / 4
Регистрация: 19.06.2014
Сообщений: 85
03.07.2014, 18:18  [ТС]
да точка не подходит, тк имеются концы строки и не единожды =(

я получил уже все что требовалось до </font></td><td class=wb > текста включительно
и мне осталось поймать в групповой конструктор только /wargroup.php?war=armed&my=2186221&join=3 90384379&side=1&jkey=8b44d8e6a7e931dc555 82e43a786cc50
но текст от
</font></td><td class=wb >
до
/wargroup.php?war=armed&my=2186221&join=3 90384379&side=1&jkey=8b44d8e6a7e931dc555 82e43a786cc50
1) может быть какой угодно
2) в этой части /wargroup.php?war=armed&my=2186221&join=3 90384379&side=1&jkey=8b44d8e6a7e931dc555 82e43a786cc50 всегда есть только /wargroup.php? все остальное тоже не уникально вплоть до class=g>
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
03.07.2014, 18:29
Лучший ответ Сообщение было отмечено naJlaguH как решение

Решение

Честно признаться, я так и не понял, что нужно получить регулярным выражением из данного текста...
Вы можете выделить тот текст, который нужен?

Добавлено через 3 минуты
Если нужно было найти любой символ, в том числе и '\n', то осмелюсь предложить вот такой паттерн:
C#
1
@"</font>(</nobr>|)</td><td class=wbt valign=top>[\w\W]+href=/wargroup"
Но лучше всё же будет, если ты покажешь именно то, что необходимо.
1
17 / 17 / 4
Регистрация: 19.06.2014
Сообщений: 85
03.07.2014, 18:37  [ТС]
то что надо [\w\W]+

не знал что внутри скобок можно использовать такую конструкцию
получается
будет работать и с [\s\S]+ и [\d\D]+
тк по сути это одно и тоже в любой ситуации
я все же надеялся что есть что то типа
[@]+
@ - абсолютно любой символ без исключения =)

тема закрыта
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
03.07.2014, 19:27
Лучший ответ Сообщение было отмечено naJlaguH как решение

Решение

BozKurt, просто нужно использовать RegexOptions.Singleline, тогда точка соответствует переносу строки тоже. А вот это: [\w\W]+ - гадость, лучше не используйете (в FAQ по регэкспам уровнем выше это обсуждается как раз).

Добавлено через 1 минуту
таким образом:
C#
1
2
3
4
5
var regex = new Regex(@"</font>(</nobr>|)</td><td class=wbt\s+valign=top>.+href=/wargroup", RegexOptions.Singleline);
foreach(Match match in regex.Matches(text))
{
   //something
}
и получаете свое:
Цитата Сообщение от naJlaguH Посмотреть сообщение
@ - абсолютно любой символ без исключения =)
1
17 / 17 / 4
Регистрация: 19.06.2014
Сообщений: 85
03.07.2014, 19:30  [ТС]
Спасибо все таки удалось избавиться от костыля
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
04.07.2014, 11:46
Psilon, про Singleline, признаться честно, забыл. А вот почему [\w\W] - гадость, так и остаётся для меня загадкой. И FAQ прочитал, но мне показалось, что там разговор начался немного с другого, да и выражение [\s\S] находит любой символ в том числе и перевод строки. Другой вопрос, когда нужно найти именно перенос строки, но речь то не об этом была...
0
169 / 132 / 29
Регистрация: 16.02.2013
Сообщений: 867
04.07.2014, 12:15
еще как "игнор" переноса в регулярке можно использовать -
C#
1
[\s\S]+
0
6 / 6 / 0
Регистрация: 13.07.2013
Сообщений: 57
15.07.2014, 11:17
Думаю тема подойдёт и для моего вопроса. Имеется текст по типу "Бла"Бла"$1.2$""$15.8$$9.14$"Бла$1.8 $". Нужно разобрать его на: "Бла"Бла", $1.2$, "", $15.8$, $9.14$, "Бла$1.8$". То есть нужно выделить текст между крайними кавычками и знаками долларов, но при вхождении долларов между кавычками они считаются частями выражения в кавычках. Если не найдено какого-либо закрывающего элемента просто выдать ошибку.
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
15.07.2014, 11:59
Как-то так:
C#
1
@"(\".*?\"(?=\$|$))|(\$.*?\$)"
P.S. Знаки переноса не допустимы.
1
6 / 6 / 0
Регистрация: 13.07.2013
Сообщений: 57
15.07.2014, 12:27
BozKurt, большое спасибо, разбивается правильно)
0
foo();
 Аватар для rattrapper
886 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
15.07.2014, 19:20
Цитата Сообщение от APXAHGEL Посмотреть сообщение
То есть нужно выделить текст между крайними кавычками и знаками долларов, но при вхождении долларов между кавычками они считаются частями выражения в кавычках.
Разобрал Вашу строку по Вашему же алгоритму. Только результат немного инной
"Бла" "$1.2$" "$15.8$$9.14$" "[ошибка, нет закрывающей кавычки]
0
307 / 284 / 102
Регистрация: 06.05.2014
Сообщений: 861
15.07.2014, 19:36
rattrapper, предложенный мной паттерн "проглотит" строку, только посчитает вторую кавычку частью предложения между первой и третьей.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.07.2014, 19:36
Помогаю со студенческими работами здесь

Регулярные выражения
Привет! Вот только позавчера сел за C#. Столкнулся с проблемой реализации одного момента. Суть такова: с клавиатуры вводится некая...

Регулярные выражения
Есть текст &lt;html&gt;... &lt;TD bgColor=#ffffcc width=&quot;74%&quot; colSpan=2&gt;&lt;FONT size=1&gt;&lt;B&gt;Зарание известный...

Регулярные выражения
Есть такой текст: Тип объекта Квартира Тип дома Царский дом Этаж 15 Этажность 25 Общая площадь 138 м² Площадь кухни 15...

Регулярные выражения
Помогите, пожалуйста, реализовать решение задания с использованием методов класса Regex Задание: Выяснить, верно ли, что среди символов...

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
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 Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru