【问题标题】:How to find out if regexp parsed string part contains another string?如何找出正则表达式解析字符串部分是否包含另一个字符串?
【发布时间】:2013-04-21 10:10:43
【问题描述】:

假设我们有一个字符串列表L,一个给定的字符串S。我们有一个像(\w+)\-(\w+) 这样的正则表达式,我们想要获取所有S 匹配正则表达式$1 的L 元素。这种事情怎么办?

【问题讨论】:

  • 假设S 是bar,而L 的一项是foo-bar-baz - 你想要匹配还是不匹配?
  • 为什么不直接制作正则表达式S + @"\-(\w+)"?

标签: c# .net regex linq


【解决方案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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多