2013-04-21 18 views
1

假設我們有一個字符串列表L,給定字符串S。我們有一個像(\w+)\-(\w+)的正則表達式,我們希望獲得所有L元素,其中S匹配$1的正則表達式。如何做這樣的事情?如何找出regexp parsed string part是否包含另一個字符串?

+0

一循環? '。凡()'? – zerkms 2013-04-21 10:12:40

+0

假設'S'是'bar',一個'L'是'foo-bar-baz' - 你想讓它成爲一個匹配嗎? – 2013-04-21 10:32:43

+0

爲什麼不直接製作正則表達式'S + @「\ - (\ w +)」'? – 2013-04-21 11:33:33

回答

1

你可以這樣做:

// sample data 
string[] L = new string[] { "bar foo", "foo bar-zoo", "bar-", "zoo bar-foo" }; 
string S = "bar"; 

Regex regex = new Regex(@"(\w+)\-(\w+)"); 
string[] res = L.Where(l => { 
     Match m = regex.Match(l); 
     if (m.Success) return m.Groups[1].Value == S; 
     else return false; 
    }).ToArray(); 

,並得到

foo bar-zoo 
zoo bar-foo 

,可能運行超出你也應包括S在正則表達式的一個簡單的方法:

Regex regex = new Regex(S + @"\-(\w+)"); 
string[] res = L.Where(l => regex.Match(l).Success).ToArray(); 
相關問題