繁体   English   中英

正则表达式和“&”号出现问题

[英]Trouble with Regular Expression and Ampersand

我在使用正则表达式(C#,ASP.NET)时遇到了一些麻烦,并且我可以确定自己做的事情根本上是错误的。 我的任务是将动态创建的gridview绑定到数据源,然后遍历网格中的一列,查找字符串“ A&I”。 单元格中(模板列中)的数据示例如下:

Name: John Doe
Phone: 555-123-1234
Email: john.doe@url.com
Dept: DHS-A&I-MRB

这是我用来查找字符串值的代码:

foreach(GridViewRow gvrow in gv.Rows)
{
   Match m = Regex.Match(gvrow.Cells[6].Text,"A&I");

   if(m.Success)
   {
      gvrow.ForeColor = System.Drawing.Color.Red;
   }
}

我对这些变体没有任何运气:“ A&I”“ [A] [&] [I]”

但是当我严格使用“&”时,该行的确变为红色。 有什么建议么?

谢谢,丹

正则表达式对我来说很好。 我怀疑文字可能编码为:

A&I

在输入上。

您也可以执行gvrow.Cells[6].Text.Contains("A&I")而不是正则表达式。 gvrow.Cells[6].Text.Contains("A&I")如果我对编码问题正确的话gvrow.Cells[6].Text.Contains("A&I")

string.Contains也比Regex快。

您还可以在检查A&I出现之前在文本上使用HttpUtility.HtmlDecode

两者都成功匹配:

Match m = Regex.Match("DHS-A&I-MRB", "A&I");
Match m0 = Regex.Match("DHS-A&I-MRB", @"A\&I");

Debug.WriteLine("m.Success = " + m.Success.ToString());
Debug.WriteLine("m0.Success = " + m0.Success.ToString());

输出:

m.Success = True
m0.Success = True

也许问题出在其他地方(可能是错误的Cells索引)?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM