【问题标题】:find exact match for string with RegExp使用 RegExp 查找字符串的完全匹配
【发布时间】:2014-12-22 17:22:03
【问题描述】:

我正在尝试编写一些包含字符串(ing)和字符串数组(splitwords)的代码。
我需要运行一个字符串,如果它与字符串数组中的字符串匹配,则对该原始字符串执行一些操作。

StringBuilder builder = new StringBuilder();

          ing = " " + ing + " ";

          builder.Append(@"{\rtf1\ansi");

          foreach (string word in splitwords)
          {

              if (Regex.IsMatch(ing, @"(?<![\w])" + word + @"(?![\w])"))
              {
                  //do domething
              }

          builder.Append(ing);
          builder.Append(@"}");


          return builder.ToString();    

它运行正常,但是如果要匹配的单词是“leite”,并且在文本中包含“leitelho”,他认为这是匹配的。 如何更改我的 if 条件来解决此问题?

【问题讨论】:

  • (?&lt;!\w)leite(?!\w) 如何匹配leitelho 中的leite
  • @Avinash Raj。它不应该匹配,但它确实......这就是我在寻求帮助。

标签: c# regex string winforms


【解决方案1】:

你可以使用这个代码,我选择了 original 代替 ing:

    static void Main(string[] args)
    {
        StringBuilder builder = new StringBuilder();
        string original = "leite";
        string[] splitwords = new string[] { "leitelho", "leite", "One" };

        original = " " + original + " ";

        builder.Append(@"{\rtf1\ansi");

        foreach (string word in splitwords)
        {

            if (Regex.IsMatch(original, @"(?<![\w])" + word + @"(?![\w])"))
            {
                //do domething
                builder.Append(original);
                builder.Append(@"}");
                Console.Write(builder.ToString());
                return;
            }
       }
    }

【讨论】:

  • 它可能只适用于“leite”这个词和其他人??
  • 确保你可以使用你想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2016-02-12
  • 2015-09-02
  • 1970-01-01
相关资源
最近更新 更多