2012-11-22 46 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 

完全忽視羣組和捕捉。