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