我有以下代码:
string filterTerm = txtDocFilterTerm.Text.ToLower();
var regEx = new Regex(filterTerm);
//griQualifiedDocs is a grid
//storage.QualifiedDocs is the master/original collection
griQualifiedDocs.ItemsSource = storage.QualifiedDocs
.Where(item => regEx.IsMatch(item.DocName.ToLower()))
.ToList();
此查询将返回与filterterm匹配的所有字符串,无论它在字符串中的位置如何。我如何限制它,以便正则表达式仅针对字符串的开头运行?
例如,如果过滤器为“Jones”,则当前代码将返回“Joe Jones”和“Jonesy Smith”;我只想回归“琼斯史密斯”
TIA。
答案 0 :(得分:6)
使用“^”锚定到字符串的开头。
var regEx = new Regex("^" + filterTerm);
答案 1 :(得分:3)
为什么不使用它(假设你当然没有传递正则表达式):
griQualifiedDocs.ItemsSource = storage.QualifiedDocs
.Where(item =>item.DocName.ToLower().StartsWith(filterTerm))
.ToList();