2012-11-22 47 views
0

我有两个字符串:"word1|word2""word2|word1"正则表达式:如何提取子

是否与正则表达式没有办法提取,如果它包含word1这些字符串word2

+0

'如果我只知道'word1'substring'这是什么意思 – Anirudha

+0

“word1”是字符串的已知部分,我想获得其他部分,如果它包含“word1” – johnny

+0

会只有两个单词分隔'|' – Anirudha

回答

1

split通过|成数组,然后find字符串任何你喜欢的字符串找到

+0

我现在正在使用这种方法,我想知道是否有任何正则表达式魔法可以存在 – johnny

0

我会去像分裂更灵活的方式对“|”并检查每个部分,并保存另一个,如果你找到一个匹配。

如果你确实需要使用正则表达式,像(word1\|(.*)|(.*)\|word1)会把单词2成反向引用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); 
    } 

但是你的要求是相当不清楚我,所以请随时ellaborate :-)

0

或其周围使用一看...

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

这样,你可以使用

match.Value 

完全忽视群组和捕捉。