正则表达式:如何提取子字符串

时间:2012-11-22 19:25:55

标签: c# regex

我有两个字符串:"word1|word2""word2|word1"

如果这些字符串包含word2,是否有任何方法可以从正则表达式中提取word1

4 个答案:

答案 0 :(得分:1)

split |字符串到数组中,然后find您想要找到的任何字符串

答案 1 :(得分:1)

我相信这样的事情会这样做:

  var input = new String[] { "word1|word2", "word2|word1" };
  var regexp = @"word1\|(?<GROUP>.*)|(?<GROUP>.*)\|word1";
  foreach (var word in input)
  {
    var match = Regex.Match(word, regexp, RegexOptions.IgnoreCase);
    Console.WriteLine(match.Groups["GROUP"].Value);
  }

但是你的要求对我来说还不太清楚,所以请随意提及: - )

答案 2 :(得分:0)

我会采取更灵活的方法,例如拆分“|”检查每个部分,如果找到匹配则保存另一部分。

如果你真的需要使用正则表达式,像(word1\|(.*)|(.*)\|word1)之类的东西会将word2放入反向引用1中。

您可能需要调整(.*)部分,具体取决于此字符串是单独还是嵌入在不应匹配的其他文本中。

答案 3 :(得分:0)

或者环顾四周......

 (?<=^word1\|).*|.*(?=\|word1$)

这样你可以使用

 match.Value

完全无视群组和捕获。