3

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

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

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

  2. 他入院时患有严重的过敏症,但被诊断出患有主动脉瓣狭窄。

有任何想法吗?

提前致谢。

4

2 回答 2

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

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

于 2013-11-13T21:28:22.143 回答
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();
    }
于 2013-11-13T21:31:17.237 回答