Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# regexp:如何提取子字符串_C#_Regex - Fatal编程技术网

C# regexp:如何提取子字符串

C# regexp:如何提取子字符串,c#,regex,C#,Regex,我有两个字符串:“word1 | word2”,“word2 | word1” 如果regexp包含word1,有没有办法从这些字符串中提取word2?通过将字符串拆分成数组,然后找到你想找到的任何字符串我会选择一种更灵活的方法,比如在“|”上拆分并检查每个部分,如果你找到匹配的,就保存另一个 如果您真的需要使用正则表达式,则类似于(word1\\|(.*)(.*)\|word1)的东西会将word2放入反向引用1中 您可能需要调整(.*)部分,这取决于该字符串是单独存在还是嵌入到其他不应匹配的

我有两个字符串:
“word1 | word2”
“word2 | word1”


如果regexp包含
word1
,有没有办法从这些字符串中提取
word2

通过
将字符串拆分成数组,然后
找到你想找到的任何字符串我会选择一种更灵活的方法,比如在“|”上拆分并检查每个部分,如果你找到匹配的,就保存另一个

如果您真的需要使用正则表达式,则类似于
(word1\\|(.*)(.*)\|word1)
的东西会将word2放入反向引用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);
  }
var input=newstring[]{“word1 | word2”,“word2 | word1”};
var regexp=@“word1\\\|(?.*)|(?.*)\\| word1”;
foreach(输入中的var字)
{
var match=Regex.match(word、regexp、RegexOptions.IgnoreCase);
Console.WriteLine(匹配.Groups[“GROUP”].Value);
}

但我对您的要求不太清楚,所以请随意填写:-)

或四处看看

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

不考虑组和捕获。

我现在使用这种方法,我想知道是否有任何正则表达式魔法可以用于此
如果我只知道“word1”子字符串
这意味着什么“word1”是字符串的已知部分,我想得到其他部分如果它包含“word1”是否只有两个单词被
 match.Value