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

Регулярное выражение для многострочных комментариев

12.11.2011, 17:38. Просмотров 6050. Ответов 7
Метки нет (Все метки)


помогите сделать регулярку для много строчных комментариев...тобишь вида /*bla bla*/
я делаю вот так: @"(/\*.*?\*/)|(/\*.*)|(.*\*/)", но он ругается на *
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2011, 17:38
Ответы с готовыми решениями:

Составить регулярное выражение для комментариев в тексте
Необходимо регулярное выражение для комментариев в тексте вида /*asd*/ также /**/(пустые) и /*...

Регулярное выражение по удалению комментариев (не задеть хинты)
Необходимо написать регулярное выражение для удаления многострочных комментариев вида /* COMMENT...

Регулярное выражение для html
Здравствуйте. Начал изучать регулярные выражения... Хотелось бы увидеть пример...Не абы какой :) ...

Регулярное выражение для *.m3u
Здравствуйте! Подскажите, как с помощью регулярного выражения вытянуть адреса из *.m3u и *.pls...

7
В астрале
Эксперт С++
8030 / 4787 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
12.11.2011, 18:39 2
bupal,
C#
1
@"/\*.*\*/";
Добавлено через 3 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
 
namespace Cons
{  
   class App
   {
      static void Main()
      {
         Regex re = new Regex(@"/\*.*\*/");
         string comment_string = @"/*комментарий*/";
         Console.WriteLine("Match {0}",
         re.Match(comment_string));
      }
   }
}
1
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
12.11.2011, 18:49  [ТС] 3
это если комментарий будет в одну строку...а ведь бывает такое, в большинстве случаев, что он разбит на много строк...
по этому нужно анализировать возможность того, что в строке может быть: /*bla или bla*/ или /*bla*/
как это сделать?...
0
В астрале
Эксперт С++
8030 / 4787 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
12.11.2011, 19:11 4
bupal, м?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
 
namespace Cons
{  
   class App
   {
      static void Main()
      {
         Regex re = new Regex(@"/\*(.|\s)*\*/");
         string long_comment_string = @"/*
         это 
         комментарий*/";
         Console.WriteLine("Match {0}",
         re.Match(long_comment_string));
         string comment_string = @"/* Привет! */";
         Console.WriteLine("Match {0}",
         re.Match(comment_string));
      }
   }
}
Добавлено через 8 минут
Если идет построчный анализ.

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.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
 
namespace Cons
{  
   class App
   {
      static void Main()
      {
         Regex re = new Regex(@"(/\*.*\*/)|(/\*.*)|(.*\*/)");
         string[] comments = 
         {
            "/*begin_of_comment",
            "end_of_comment*/",
            "/*full_comment*/"
         };
         foreach (string s in comments) 
         {
            Console.WriteLine("Match {0}",
            re.Match(s));
         }
      }
   }
}
0
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
12.11.2011, 19:39  [ТС] 5
всё равно продолжает ругаться....
у меня регулярка вписана в
C#
1
string regmcom = "(" + green[1] + ".*" + green[2] + ")" + "|" + "(" + green[1] + ".*" + ")" + "|" + "(" + ".*" + green[2] + ")";
где green[1] = /*; green[2] = */;
потом она проверяется
C#
1
Match ismMatch = Regex.Match(s, regmcom);
s - это входящая строка
и именно когда происходит эта проверка, он ругается на *
0
В астрале
Эксперт С++
8030 / 4787 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
12.11.2011, 21:36 6
bupal, У меня мой код отработал на 5.
* должен экранироваться, если используется как символ
0
27 / 27 / 8
Регистрация: 30.03.2010
Сообщений: 380
Записей в блоге: 1
12.11.2011, 23:10  [ТС] 7
спасибо..действительно нужно было экранировать
но к сожалению эта регулярка не работает, когда комментарии вида:
/*
...
...
*/

при том нужно учесть, что строки подаются и анализируются по отдельности...
тобишь в первой строке будет /*, со второй, до n - то, что внутри, в последней */
0
В астрале
Эксперт С++
8030 / 4787 / 655
Регистрация: 24.06.2010
Сообщений: 10,558
14.11.2011, 10:32 8
bupal, Пост #4 второй код не подходит?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.11.2011, 10:32

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Регулярное выражение для пароля
Нужно регулярное выражение для пароля. В пароле должна быть минимум одна цифра, одна...

Регулярное выражение для IP -адресов
С регулярными выражениями ещё не сталкивался в программировании на С#. Как будет выглядеть...

Регулярное выражение для тегов
Не могу додуматься, как сделать так чтобы выражение что в тэги t было все синие(одним и вторым...

Регулярное выражение для e-mail'a
Добрый день, столкнулся с небольшой проблемой. Потребовалось написать регулярное выражение,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.