C#中需要正则表达式来确定多个单词是否在N个单词内

时间:2013-11-13 21:04:49

标签: c# .net regex

我有以下问题,我认为正则表达式应该能够解决。我需要确定是否在字符串中找到以下模式。该模式以三个单词中的一个开头,必须遵循,但不是立即,另外两个单词,并且必须在N个单词的总长度内找到该模式。

作为一个例子,让第一个单词为'严重',最后两个单词为'主动脉'和'狭窄',让N = 6.句子#1应该匹配,因为所有三个单词都在五个单词中找到但是#2不应该因为所有三个单词都在十个单词中找到,大于N = 6。

  1. 严重的主动脉瓣狭窄严重。

  2. 入院时出现严重过敏但被诊断为主动脉瓣狭窄。

  3. 有什么想法吗?

    提前致谢。

2 个答案:

答案 0 :(得分:0)

Regex monkey = new Regex(@".*[severe ][\b\w*\b ]{0,3}[aortic stenosis].*");

我的正则表达式有点生疏,但我认为这应该有用。

答案 1 :(得分:0)

我建议在c#中使用正则表达式的字符功能。例如

    static void Main(string[] args)
    {
        String example1 = "There was severe to critical aortic stenosis.";
        String example2 = "He had a severe allergy when admitted but was diagnosed with aortic stenosis.";
        // {m,n} words
        Regex reg = new Regex("severe (\\w* ){0,6}aortic stenosis");
        Console.WriteLine(reg.ToString());

        Match m1 = reg.Match(example1);
        Match m2 = reg.Match(example2);

        Console.WriteLine(m1.Success);
        Console.WriteLine(m2.Success);

        Console.ReadLine();
    }