RegEx最近的单词匹配贪婪

时间:2012-08-28 02:30:01

标签: c# regex greedy

我有这个文字

"(Objectid < 200 OR ObjectID > 600) and (test or best) W/5 AND (apple OR 10a) AND (Objectid < 100 OR ObjectID > 500)"

我希望在上面的And(从左边或右边)最近的Or中包含包含子串( )W/digit的字符串字符串,其中digit是一个数字。

在上面的例子中,我应该得到(测试或最佳)(苹果OR 10a)

1 个答案:

答案 0 :(得分:0)

试试:

var rgx = new Regex(@"(\([^)]*\))\WW/\d+\W(?:AND|OR|IN)\W(\([^)]*\))", RegexOptions.IgnoreCase);
var items = new List<Tuple<string,string>>();
var match = rgx.Match(subjectString);
while (match.Success) {
    items.Add(new Tuple<string,string>(match.Groups[1].Value, match.Groups[2].Value));
    match = match.NextMatch();
}