2014-02-25 36 views
2

我有例如列表:Regex.IsMatch - 沒有達到比賽

Type [data] 
Device Type [data] 
Pin type [data] 

我想只搜索類型[數據]不是設備類型或針腳類型。 請注意[數據]文字根據列表而變化。

我當前的代碼:

result = Regex.IsMatch(line1, "\\bType\\b"); 

我在做什麼錯?

回答

3

使用carat('^')來匹配字符串的開頭。

Regex.IsMatch(line1, @"^Type (.*)$"); 
1

您正則表達式\bType\b將尋找的Type OCCURENCES在該行,該行的末尾,文字之間的開始。

要匹配你提到你可以使用這個表達式第一種情況:

result = Regex.IsMatch(line1, @"^Type\b"); 

現場演示:http://rubular.com/r/iEiDEhVt5g

使用^看行的開頭。這樣,任何出現在單詞之間或末尾的Type都不會產生匹配。

2

如果您只需要在字符串的開頭匹配Type,你不需要正則表達式的所有:使用System.StringStartsWith方法,像這樣:

if (line1.StartWith("Type ")) { 
    ... 
} 
2

你說你有一個列表,但不是什麼清單。假設它是一個字符串列表,你可以通過使用LINQ,而不是找到以「類型」的所有字符串:

var matches = data.Where(x => x.StartsWith("Type")); 

如果有至多一個單一的比賽,它的保證是在列表中的某個地方,你可以使用這個:

var matches = data.Single(x => x.StartsWith("Type"));