正则表达式返回所有字符

时间:2012-05-17 20:47:16

标签: c# regex

我使用(。)匹配所有字符,但它也返回太多匹配。我怎么做它只有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
    }

2 个答案:

答案 0 :(得分:7)

要使其成为一个匹配项,请使用(.*)

单个.匹配单个字符。附加*表示"零或更多"。

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

答案 1 :(得分:1)

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