1

私がサポートしている .Net WinForms アプリケーションには、次の正規表現があります。

public static String MacroTemplate = @"(~#([^:]+):([^:]+):([^:]*)(?::(.*))?#~)";

私はそのほとんどを理解しているので、~# で始まり #~ で終わり、コロンで区切られたコンポーネントを持つ文字列に一致することがわかります。私が理解していないのは、式の最後の部分、特に次の部分です。

(?::(.*))?

式のこの部分が何に一致するか説明できる人はいますか? 最後の疑問符は、この部分がオプションであることを示していますか? どういう意味?

4

1 に答える 1

7

はい、最後の疑問符は、その部分がオプションであることを示しています。先頭?:はそれを非キャプチャ グループにします (グループは結果のグループ リストに含まれず、後方参照などでは使用できません)。2 番目のコロンは単なるコロンです。

したがって、オプションでコロンの後に任意の数が続くものと一致します。最後のセクションをオプションにし、任意の数のセクションに一致させることもできます。

于 2013-06-26T17:28:07.200 に答える