与えられた文字列から句読文字を探し出すプログラムを作成しています。

        String str = "while i < 10 {";
        String regexpat_test = "[\\p{P}]?";
        Regex rgx_test = new Regex(regexpat_test);
        MatchCollection matchCol_test = rgx_test.Matches(str);
        foreach (Match match in matchCol_test)
        {
            String strtest = match.Value;
        }

しかしこれにてmatchに入るのは空の文字列のみです。
\p{P}で句読文字に対応すると考えておりましたが、何か他に
設定するような事項があるのでしょうか?