Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Регулярное выражение (http://forum.oszone.net/showthread.php?t=341039)

wlad1164 24-06-2019 22:44 2876714

Регулярное выражение
 
Доброго времени суток, помогите пожалуйста разобраться с регулярным выражением, имеем строку :
Код:

/voiting Как он поступил?:Хорошо,Плохо
Необходимо её проверить на соответствие выражению и установить значения 2х переменных (1-вопрос,2-варианты ответа через запятую, которых должно быть 2 и более шт.)
Все до чего я дошел
Код:

\/voiting[\s]{1,}([\w]{3,}):(\w+,+\w+,*\w*)
но ничего не получается...
Код:

        private void button1_Click(object sender, EventArgs e)
        {
            string test = @"/voiting Как он поступил?:Хорошо,Плохо";
            var RegExpString2 = Regex.Match(test, @"\/voiting[\s]{1,}([\w]{3,}):(\w+,+\w+,*\w*)");
            if (RegExpString2.Success)
            {
                MessageBox.Show("УРА!!!!!!"+ RegExpString2.Groups[1].ToString()+" вар:"+ RegExpString2.Groups[2].ToString());
            }
        }


shisik 24-06-2019 23:02 2876715

Ну во-первых это

Код:

([\w]{3,})
будет соответствовать последовательности из минимум 3 букв, цифр или знаков подчёркивания. А не трём словам через пробел, что скорее всего вы пытаетесь изобразить. Если строка вопроса может сожержать буквы, цифры, пробелы и в конце должен стоять знак вопроса, то их и надо перечислить в квадратных скобках:

Код:

([\w\s]+\?)
Во-вторых мне совсем непонятно, что имеется в виду в последней части здесь

Код:

(\w+,+\w+,*\w*)
Я имею в виду *\w*. Если нужно минимум 2 варианта ответа через запятую, то можно сделать так:

Код:

((?:[\w\s]+,)+[\w\s]*)
где каждый ответ может содержать буквы, цифры, символ подчёркивания.


Время: 17:55.

Время: 17:55.
© OSzone.net 2001-