我有一个列表例如:
Type [data]
Device Type [data]
Pin type [data]
我正在尝试仅搜索类型[数据]而非设备类型或引脚类型。 请注意[数据]文本的更改取决于列表。
我目前的代码:
result = Regex.IsMatch(line1, "\\bType\\b");
我做错了什么?
答案 0 :(得分:3)
使用克拉('^')匹配字符串的开头。
Regex.IsMatch(line1, @"^Type (.*)$");
答案 1 :(得分:2)
如果您只需要在字符串的开头匹配Type
,则根本不需要正则表达式:使用StartsWith
的{{1}}方法,如下所示:
System.String
答案 2 :(得分:2)
你说你有一个清单,但没有清单。假设它是一个字符串列表,您可以使用LINQ找到以“Type”开头的所有字符串:
var matches = data.Where(x => x.StartsWith("Type"));
如果最多只有一个匹配,并且保证在列表中的某个位置,您可以使用此:
var matches = data.Single(x => x.StartsWith("Type"));
答案 3 :(得分:1)
您的正则表达式\bType\b
会在行的开头,行尾和之间查找Type
的出现。
要匹配您提到的第一个案例,您可以使用此正则表达式:
result = Regex.IsMatch(line1, @"^Type\b");
现场演示:http://rubular.com/r/iEiDEhVt5g
使用^
查看该行的开头。这样,任何单词之间或最后出现的Type
都不会产生匹配。