在正则表达式中使用变量时出错了

时间:2014-03-26 14:43:19

标签: c# regex

我需要实现这样的输出列表:

Zone1 
Zone7
Zone2

来自这个字符串:

设置区域“Zone1”vrouter“trust-vr”

设置区域“Zone3”vrouter“Untrust-vr”

设置区域“Zone7”vrouter“trust-vr”

设置区域“Zone2”vrouter“trust-vr”

设置区域“Zone4”vrouter“Untrust-vr”

要做到这一点,我有代码:

                foreach (string v in vr)
            {
                string pattern = @"set zone ""([\w-]+)"" (vrouter)"+v;


                var myCollection =
                    Regex.Matches(reader1.ReadToEnd(), pattern)
                        .Cast<Match>().Where(m => m.Success)
                        .Select(m => m.Groups[1].Value)
                        .Distinct();

                foreach (string match in myCollection)
                {
                    txt1.Text += match + Environment.NewLine;
                }
            }

我认为我没有正确使用模式regexp中的变量 v ,因为这个变量代码可以正常工作但输出所有区域。但是我只需要那个带有这个变量名称的vrouter。

1 个答案:

答案 0 :(得分:1)

尝试

string pattern = @"set zone ""([\w-]+)"" vrouter """+v;

(假设v包含信任或Untrust等字符串)