-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.匹配单个字符。附加的*意思是“零或更多”。

编辑响应关于两个匹配的评论(第一个匹配包含字符串,第二个是空匹配):匹配文档表明它对空匹配进行了特殊处理。该页面上有一个很好的示例来显示该行为。但最终的结果是,比赛结束后,它没有向前移动,所以它拿起了一个空匹配。为防止这种情况,您可以使用行首和行尾锚点: (^.*$)或使用+强制包含至少一个字符: (.+)

于 2012-05-17T20:48:34.103 回答
1

由于您要匹配任意数量的任意字符,请将 更改..*匹配零个或多个,或者.+匹配一个或多个。

于 2012-05-17T20:49:15.837 回答