我使用(。)匹配所有字符,但它也返回太多匹配。我怎么做它只有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
}
答案 0 :(得分:7)
要使其成为一个匹配项,请使用(.*)
单个.
匹配单个字符。附加*
表示"零或更多"。
编辑响应有关两个匹配的评论(第一个匹配包含字符串,第二个匹配为空匹配):Matches documentation表示它给出空匹配特殊处理。在该页面上有一个很好的例子来显示行为。但最终的结果是,在比赛结束后,它不会向前移动,所以它会选择一个空的比赛。为了防止这种情况发生,您可以使用行首和行尾锚点(^.*$)
或使用+
强制包含至少一个字符:(.+)
。
答案 1 :(得分:1)
由于您要匹配任意数量的任何字符,请将.
更改为.*
以匹配零或更多,或.+
以匹配一个或多个。