如何找出正则表达式解析字符串部分是否包含另一个字符串?

时间:2013-04-21 10:10:44

标签: c# .net regex linq

假设我们有一个字符串L列表,给定字符串S。我们有一个像(\w+)\-(\w+)这样的正则表达式,我们希望得到L匹配S regexp的所有$1个元素。怎么做这个?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

// sample data
string[] L = new string[] { "bar foo", "foo bar-zoo", "bar-", "zoo bar-foo" };
string S = "bar";

Regex regex = new Regex(@"(\w+)\-(\w+)");
string[] res = L.Where(l => { 
      Match m = regex.Match(l);
      if (m.Success) return m.Groups[1].Value == S;
      else return false;
    }).ToArray();

并获取

foo bar-zoo
zoo bar-foo

可能更适合您的一种更简单的方法是在正则表达式中包含S

Regex regex = new Regex(S + @"\-(\w+)");
string[] res = L.Where(l => regex.Match(l).Success).ToArray();