2016-10-26 15 views
0

Я понимаю концепцию повторения 0 или более раз (*) и группировку '()' на своем собственном, но мне трудно понять их приведенные примеры практики.Проблемы с регулярными выражениями

Например, (да) * содержит как пустой набор, так и слово «да», но не y или ss. Я предполагаю, что он не содержит эти слова из-за группировки, но означает ли это, что слово «дайес» также действует, когда группа была повторена?

В отличие от этого, я предполагаю, что с регулярным выражением «да *» любой символ может быть повторен. Например, 'y', 'ye' 'es' 'yes', 'yy'. Однако в тех решениях, которые нам предоставлены, указано, что слово «y» не содержится. Я смущен.

+1

'yes *' соответствует 'ye' или' yes' или 'yesssssss'. Только 's' получает модификатор. –

+0

, если вы хотите совместить 'y',' ye', 'es',' yes', 'yy' ... вы должны использовать класс символов:' [yes] + ' – Toto

+0

@ chris85 Вы ​​правы. .. и в последнее время я проводил слишком много времени. –

ответ

1

Ваше понимание (да) * верно ... (да) * соответствует строке «да» (точно - не короче, не более) 0 или более раз - то есть пустая строка или да, дайес, yesyesyesyesyesyes и т.д.

Но ваше понимание да * НЕ правильно ... да * соответствует строке «вы», а затем 0 или более «s» символов - то есть вы, да, Yess, yessssssss

1

«Ноль или более» * модификатор применяется только к персонажу или группе, непосредственно предшествующей ему.

В первом примере мы имеем группу (yes)* - это будет соответствовать '', 'yes', 'yesyes' и т.д.

Во втором примере, yes*, модификатор относится только к письму s. Это будет соответствовать 'ye', 'yes', 'yess' и т.д.

Если это не ясно, то, возможно, вы можете разработать немного на источник вашей путаницы.

+0

Ahh это довольно ясно, спасибо. –

Смежные вопросы