我有以下问题,我认为正则表达式应该能够解决。我需要确定是否在字符串中找到以下模式。该模式以三个单词中的一个开头,必须遵循,但不是立即,另外两个单词,并且必须在N个单词的总长度内找到该模式。
作为一个例子,让第一个单词为'严重',最后两个单词为'主动脉'和'狭窄',让N = 6.句子#1应该匹配,因为所有三个单词都在五个单词中找到但是#2不应该因为所有三个单词都在十个单词中找到,大于N = 6。
严重的主动脉瓣狭窄严重。
入院时出现严重过敏但被诊断为主动脉瓣狭窄。
有什么想法吗?
提前致谢。
答案 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();
}