-2

(.) を使用してすべての文字を一致させていましたが、あまりにも多くの一致が返されます。どうすれば1つだけ一致するようになりますか?

 private MatchCollection RegexMatchingV2(string data, string regex)
    {
        MatchCollection col = null;
        try
        {
            col = Regex.Matches(data, regex, RegexOptions.IgnoreCase);
        }
        catch (Exception ex)
        {
            Response.Write("RegexMatching ERROR:" + ex.Message);
        }
        return col;
    }

    protected void Page_Load(object sender, EventArgs e)
    {
       MatchCollection col= RegexMatchingV2("return all of this data in 1 match", "(.)");
       Response.Write(col.Count);//Too much matches
    }
4

2 に答える 2

7

それを単一のマッチにするために(.*)

single.は 1 文字に一致します。追加*は「ゼロ以上」を意味します。

編集2 つの一致 (最初の一致には文字列が含まれ、2 番目の一致には空の一致) に関するコメントへの応答:一致のドキュメントは、空の一致に特別な処理を与えることを示しています。そのページには、動作を示す良い例があります。しかし、最終的な結果として、マッチの後、前方への移動を行わないため、空のマッチを取得します。これを防ぐには、行頭アンカーと行末アンカーを (^.*$)使用するか、 を使用し+て少なくとも 1 文字を強制的に含めることができます (.+)

于 2012-05-17T20:48:34.103 に答える
1

任意の数の任意の文字に一致させたいので、.to.*を 0 個以上の.+一致、または 1 個以上の一致に変更します。

于 2012-05-17T20:49:15.837 に答える