PDA

Показать полную графическую версию : Регулярное выражение


wlad1164
24-06-2019, 22:44
Доброго времени суток, помогите пожалуйста разобраться с регулярным выражением, имеем строку : /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
Ну во-первых это

([\w]{3,})

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

([\w\s]+\?)

Во-вторых мне совсем непонятно, что имеется в виду в последней части здесь

(\w+,+\w+,*\w*)

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

((?:[\w\s]+,)+[\w\s]*)

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




© OSzone.net 2001-2012