Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1

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

16.11.2011, 23:42. Показов 1477. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
регулярка: "\\b" + blue[i] + "\\b",
ищет слова, которые компилятор выделяет синим цветом..
blue[i] - это массив, в котором содержатся те самые слова
ну собственно потом проверяет и выделяет... но проблема в том, что нужно как то ограничить вход регулярки в кавычки "..."
потому что когда внутри строковых записаны слова, которые содержатся в массиве, то они становятся синими.., что совсем ненужно
пожалуйста, помогите как то исправить или дополнить его..
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.11.2011, 23:42
Ответы с готовыми решениями:

Регулярное выражение
Если строка выглядит так, "123;-123;4454;-123123;", то можно продолжать программу, а если "123;-12-3;4вasd5ррова4;-123123;", то...

Регулярное выражение
Товарищи, столкнулся с проблемой. нужно распарсить строку 90219( 60розовый)-1/90215( 60черный/белый )-2/90230-9(...

Регулярное выражение
Пытаюсь разобраться с регулярными выражениями https://www.codewars.com/kata/regexp-basics-is-it-a-digit/train/csharp Этот код не...

14
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
19.11.2011, 14:17  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
for (int i = 0; i < blue.Length; i++)
                {
                    regkey = "\\b" + blue[i] + "\\b";
                    Match key = Regex.Match(s, regkey);
                    if (key.Success)
                    {
                          s = new Regex(regkey, RegexOptions.Compiled).Replace(s, "<span id=keyword>$0</span>");
                    }
 
 
                }
Вот так происходит поиск и выделение в строке..
Что можно сделать, чтобы он не выделял слова, которые нашёл внутри строковых
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
20.11.2011, 13:21
Ларчик открывается очень просто
C#
1
2
3
4
5
6
7
            string s = @"111 aaa 22 ""bbb"", ""AAA"" BBB 333";
            string highlightPattern = @"<span class=""highlight"">$0</span>";
 
            string[] blue = { "aaa", "bbb" };
            string searchPattern = String.Format(@"(?<!"")((\b{0}\b))(?!"")", String.Join(@"\b)|(\b", blue));
 
            string html = Regex.Replace(s, searchPattern, highlightPattern, RegexOptions.IgnoreCase);
1
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
20.11.2011, 14:18  [ТС]
Цитата Сообщение от SNOOPYKZ Посмотреть сообщение
Ларчик открывается очень просто
C#
1
2
3
4
5
6
7
            string s = @"111 aaa 22 ""bbb"", ""AAA"" BBB 333";
            string highlightPattern = @"<span class=""highlight"">$0</span>";
 
            string[] blue = { "aaa", "bbb" };
            string searchPattern = String.Format(@"(?<!"")((\b{0}\b))(?!"")", String.Join(@"\b)|(\b", blue));
 
            string html = Regex.Replace(s, searchPattern, highlightPattern, RegexOptions.IgnoreCase);
А что нужно добавить, чтобы не входило в строки, типа: " public "
а то если там пробелы, то он всё равно синим выделяет...

Добавлено через 7 минут
а..всё, разобрался, сделал так
C#
1
String.Format(@"(?<!"" ?)((\b{0}\b))(?! ?"")", String.Join(@"\b)|(\b", blue));
ещё раз спасибо))
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
20.11.2011, 15:13
bupal, что бы работать с пробелом, рекомендую \s

и вообще, прочитай статейку, классно написано
http://www.rsdn.ru/article/alg/regular.xml
0
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
20.11.2011, 16:10  [ТС]
Цитата Сообщение от SNOOPYKZ Посмотреть сообщение
bupal, что бы работать с пробелом, рекомендую \s

и вообще, прочитай статейку, классно написано
http://www.rsdn.ru/article/alg/regular.xml
SNOOPYKZ подскажи пожалуйста, почему он пропускает такие слова, как #region, #endregion..?
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
20.11.2011, 16:37
Если по-простому, то ответ выглядит примерно так:

наверное потому ты юзаешь ключ \b, а \b - это все что не \w
0
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
20.11.2011, 16:59  [ТС]
Цитата Сообщение от SNOOPYKZ Посмотреть сообщение
Если по-простому, то ответ выглядит примерно так:
а как это исправить?...
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
20.11.2011, 18:02
тебе нужно сделать свое регулярное выражение более точным
вышли свой код, я поправлю, ты посмотришь и пойдешь, в чем дело...
0
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
20.11.2011, 18:26  [ТС]
Цитата Сообщение от SNOOPYKZ Посмотреть сообщение
тебе нужно сделать свое регулярное выражение более точным
вышли свой код, я поправлю, ты посмотришь и пойдешь, в чем дело...
C#
1
2
string regkey = String.Format(@"(?<!""\s?)((\b{0}\b))(?!\s?"")", String.Join(@"\b)|(\b", blue));
s = Regex.Replace(s, regkey, "<span id=keyword>$0</span>", RegexOptions.IgnoreCase);
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
20.11.2011, 18:41
ммм, что-то я смотрю на твой код и не пойму, что ты хочет сделать.
А то что ты выслал, компилится, но работает не правильно.
0
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
20.11.2011, 22:20  [ТС]
Цитата Сообщение от SNOOPYKZ Посмотреть сообщение
ммм, что-то я смотрю на твой код и не пойму, что ты хочет сделать.
А то что ты выслал, компилится, но работает не правильно.
я хочу сделать, чтобы он выделял мне #region, #endregion? т.к. они тоже есть в массиве blue

у меня возник ещё один вопрос, как сделать, чтобы выделялись строковые, но не выделялись те, что находятся в комментариях...
я делаю так
C#
1
2
string regstr = "(" + red[0] + ".*?" + red[0] + ")" + "|" + "(" + red[1] + ".*?" + red[1] + ")";
s = new Regex(regstr, RegexOptions.Compiled).Replace(s, "<span id=letters>$0</span>");
Добавлено через 1 час 18 минут
red[0] - это "
red[1] - это '
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
21.11.2011, 07:10
Давай step-by-step
первая задача - сделать так, что бы распознавались #region и #endregion
C#
1
2
3
4
5
        string s = @"111 aaa 22 ""bbb"", ""AAA"" BBB 333 #region 444 #endregion 555";
        string highlightPattern = @"<span class=""highlight"">$0</span>";
 
        string[] blue = { @"\baaa\b", @"\bbbb\b", @"#region\b", @"#endregion\b" };
        string searchPattern = String.Format(@"(?<!"")(({0}))(?!"")", String.Join(@")|(", blue));
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
21.11.2011, 07:33
Теперь по-поводу кавычек...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public string html { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        string s = @"111 aaa 22 ""bbb"", ""AAA"" BBB 333 #region 444 #endregion 555";
        html = s;
 
        string[] keyword = { @"\baaa\b", @"\bbbb\b", @"#region\b", @"#endregion\b" };
        string searchPattern = String.Format(@"(?<!"")(({0}))(?!"")", String.Join(@")|(", keyword));
        html = doHighlight(searchPattern, "id=keyword", html);
 
        html = doHighlight(@"(?<="")\w*(?="")", "id=letters", html);
    }
 
    protected string doHighlight(string searchPattern, string spanProp, string s)
    {
        string highlightPattern = String.Format(@"<span {0}>$0</span>", spanProp);
        s = Regex.Replace(s, searchPattern, highlightPattern, RegexOptions.IgnoreCase);
        return s;
    }
Миниатюры
Регулярное выражение  
0
102 / 102 / 13
Регистрация: 22.10.2011
Сообщений: 328
21.11.2011, 07:36
а теперь с кавычками и апострофом
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
using System;
using System.Text.RegularExpressions;
using System.Web.UI.WebControls;
 
public partial class _Default : System.Web.UI.Page
{
    public string html { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        string s = @"111 aaa 22 ""bbb"", ""AAA"", 'bbb' BBB 333 #region 444 #endregion 555";
        html = s;
 
        string[] keyword = { @"\baaa\b", @"\bbbb\b", @"#region\b", @"#endregion\b" };
        string searchPattern = String.Format(@"(?<!(""|'))(({0}))(?!(""|'))", String.Join(@")|(", keyword));
        html = doHighlight(searchPattern, "id=keyword", html);
 
        html = doHighlight(@"(?<=(""|'))\w*(?=(""|'))", "id=letters", html);
    }
 
    protected string doHighlight(string searchPattern, string spanProp, string s)
    {
        string highlightPattern = String.Format(@"<span {0}>$0</span>", spanProp);
        s = Regex.Replace(s, searchPattern, highlightPattern, RegexOptions.IgnoreCase);
        return s;
    }
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.11.2011, 07:36
Помогаю со студенческими работами здесь

Регулярное выражение
Здрвствуйте, форумчане! Имеется строки вида: Маккаби Тель-АвивБарселона99 : 83 БарселонаРеал Мадрид86 : 69 БруэсаБарселона71...

Регулярное выражение
Пожалуйста подскажите запрос для выбора регулярным выражением &lt;a href=&quot;https://site.com.ua/prestigio_psb141c01bfh_db_cis/p63291506/&quot;...

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

Регулярное выражение
Все получается кроме этой функции. Надо вытащить вот эти данные со всеми новыми строчками &lt;uid&gt;11284273 96579922 ...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
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. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
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. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru