Я пытаюсь написать код, который будет проверять, содержит ли данная строка определенные строки с определенным шаблоном. Если быть точным, например:
string mainString = @"~(Homo Sapiens means (human being)) or man or ~woman"
List<string> checkList = new List<string>{"homo sapiens","human","man","woman"};
Теперь я хочу извлечь
"homo sapiens", "human" and "woman" but NOT "man"
из приведенного выше списка, поскольку они следуют за шаблоном, т.е. строка, за которой следует ~ или одна из строк внутри скобок, которая начинается с ~. До сих пор я придумал:
string mainString = @"~(Homo Sapiens means (human being)) or man or ~woman"
List<string> checkList = new List<string>{"homo sapiens","human","man","woman"};
var prunedList = new List<string>();
foreach(var term in checkList)
{
var pattern = @"~(\s)*(\(\s*)?(\(?\w\s*\)?)*" + term + @"(\s*\))?";
Match m = Regex.Match(mainString, pattern);
if(m.success)
{
prunedList.Add(term);
}
}
Но этот шаблон не работает для всех случаев... Может ли кто-нибудь предложить мне, как это можно сделать?