powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Шаблон регулярного выражения для проверки описания переменных VBA
3 сообщений из 3, страница 1 из 1
Шаблон регулярного выражения для проверки описания переменных VBA
    #37504352
Kottik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Функция должна проверить корректность описания переменных кода VBA.
Описание упрощено до
Dim <имяПеременной> As <типДанных>[, <имяПеременной> As <типДанных>]]
Необходимо извлечь из входящей строки все <имяПеременной> и <типДанных>.

Код: plaintext
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.
    private bool CheckDescriptionOfVar(string text)
        {
           Match m;
           string Pattern = @"Dim([\s]*([\S]*)[\s]*As[\s]*([\S]*)[,]?[\s]*)*"; 

           //ВАРИАНТ 1
           Regex pat = new Regex(Pattern);
           MatchCollection matchcol = pat.Matches(text);

           foreach (Match match in matchcol)
           {
               for (int i = 0; i < match.Groups.Count; i++)
               {
                   MessageBox.Show(match.Groups[i].ToString());
               }
               
           }

           //ВАРИАНТ 2
            Regex myregex = new Regex(Pattern);
  
           string[] item;
           item = myregex.Split(text);
         
            return false;
        }

Оба варианта извлекают только последнее вхождение.

Например, для входной строки Dim Number As Integer, per As Bool
Результат:
[0] "" string
[1] "per As Bool" string
[2] "per" string
[3] "Bool" string
[4] "" string



Ожидал получить:
[0] "Number As Integer" string
[1] "Number" string
[2] "Integer" string
[3] "per As Bool" string
[4] "per" string
[5] "Bool" string
...
Рейтинг: 0 / 0
Шаблон регулярного выражения для проверки описания переменных VBA
    #37505815
stimpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
const string str = "Dim Number As Integer, per As Bool, newVar As Type";
            var vars = str.Split(new[] {','});

            var reg = new Regex(@"^(Dim)?\s+(?<varName>\w+)\s+As\s+(?<type>\w+)$", RegexOptions.ExplicitCapture);
            foreach (var @var in vars)
            {
                var m = reg.Match(@var);
                if(m.Success)
                    Console.WriteLine("variable name:{0}; variable type:{1}", m.Groups["varName"], m.Groups["type"]);
            }
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Шаблон регулярного выражения для проверки описания переменных VBA
    #38054112
Kottik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stimpi,

Здравствуйте. Простите, что не сказал вам когда-то спасибо, не знаю, как так случилось. Стыдно. Вы мне очень помогли, большое спасибо! Пусть и через год :-)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Шаблон регулярного выражения для проверки описания переменных VBA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]