c存在运算符的Regex.IsMatch字符串

本文关键字:IsMatch 字符串 Regex 存在 运算符 | 更新日期: 2023-09-27 18:22:08

我似乎无法让这些代码运行

private void test()
{
    int success = 0;
    string strLine = "E0 Q0 V1 X4 &C1 &D1 &R1 &S0 +IFC= 2,2 &K3 +FCLASS0";
    if (Regex.IsMatch(strLine, "E6 Q1 V4 X8 &C2 &D1 &R1 &S0 +IFC= 4,4 &K4 +FCLASS2"))
            success++;
    if (Regex.IsMatch(strLine, "E0 Q0 V1 X4 &C1 &D1 &R1 &S0 +IFC= 2,2 &K3 +FCLASS0"))
            success++;
    LogMessage("Success =" + success.ToString()); // SENDS DATA TO LOG SCREEN
}
private void TESTbutton_Click(object sender, EventArgs e)
{
     test();
}

17:39:29.98-成功=0

我需要准确匹配它,并尝试在运算符"+&-"之前使用反斜杠"''"等,使其成为真的正确方法是什么?

c存在运算符的Regex.IsMatch字符串

如果您坚持使用正则表达式,则必须转义密钥符号(+*等):

  String toFind = "E0 Q0 V1 X4 &C1 &D1 &R1 &S0 +IFC= 2,2 &K3 +FCLASS0";
  // String = Regex.Escape(toFind); // for "contains"
  String pattern = "^" + Regex.Escape(toFind) + "$"; // ^ ... $ for exact match 
  if (Regex.IsMatch(strLine, pattern))
    success++;

然而,您似乎可以比较字符串:

  String toFind = "E0 Q0 V1 X4 &C1 &D1 &R1 &S0 +IFC= 2,2 &K3 +FCLASS0";
  // Exact match
  if (String.Equals(strLine, toFind, StringComparison.Ordinal))
     success++;
  // Contains
  // if (strLine.Contains(toFind)) 
  //   success++;