使用C#中的正则表达式检查给定字符串中的单词

时间:2018-07-01 15:50:46

标签: c# regex

我当前正在尝试检查用户输入的字符串中是否包含特定单词。我正在使用正则表达式,并具有以下代码:

-9.944117370034156e-05
x_1 -9.944117370034156e-05
x_2 3.4085428032616

以上代码中'found'的值为true,因为基于'pattern'在输入'oaaawaala'中找到了单词'Owl'。

但是,如果我将输入顺序更改为“ alaawaaao”,或者以其他方式对输入进行加扰,则“ found”的值将为false,因为该模式不再匹配。我需要的解决方案是,在任何给定的字符串(加扰或未加扰)中都应找到“单词”。有关如何执行此操作的任何建议。

谢谢

2 个答案:

答案 0 :(得分:1)

为什么不仅仅检查input是否包含word中的所有字符?

class Program
 {
    static void Main(string[] args)
    {

        string input = @"oaaawaala";
        string word = "Owl";

        var found = word.ToCharArray().Select(c => char.ToUpper(c)).Distinct().All(c => input.ToUpper().Contains(c));

        Console.WriteLine("Found: {0}", found);
    }
}

答案 1 :(得分:0)

对于正则表达式解决方案,请尝试以下操作:

        string input = @"oaaawaala";
        string word = "Owl";
        if (Regex.IsMatch(input, Regex.Escape(word), RegexOptions.IgnoreCase))
        {
            MatchCollection matches = Regex.Matches(input, Regex.Escape(word), RegexOptions.IgnoreCase);
            Console.WriteLine("Found: {0}", matches[0].Groups[0].Value);
        }