В приложении .NET WinForms, что я поддерживаю есть следующее регулярное выражение:Разъяснения по регулярному выражению
public static String MacroTemplate = @"(~#([^:]+):([^:]+):([^:]*)(?::(.*))?#~)";
Я понимаю, большинство из них, так что я получаю, что соответствует строке, которая начинается с ~ # и заканчивается на # ~, а затем имеет компоненты, разделенные двоеточиями. Что я не понимаю, это последняя часть выражения, в частности эта часть:
(?::(.*))?
Может ли кто-нибудь объяснить, что соответствует этой части выражения? Означает ли последний знак вопроса, что эта часть является необязательной? Что значит?
Спасибо, minitech. Теперь это имеет смысл. Нехватывающая группа была понятием, которое мне было незнакомо. – BruceHill