正则表达式,IsMatch有什么不同

时间:2011-07-17 18:44:21

标签: c# .net regex

我正在尝试查找遵循“char'h'后跟一个或多个数字模式的文件”,例如h0,h1,h22

但我也得到了“h22 cco”和hhh0

如何修复

files = new List<String>((from file in files where Regex.IsMatch(Path.GetFileNameWithoutExtension(file), "h\\d+", RegexOptions.IgnoreCase | RegexOptions.Singleline) select Path.GetFileNameWithoutExtension(file)));

此致

2 个答案:

答案 0 :(得分:3)

使用行或字符串特殊字符^$的开头和结尾,即:^h+\d+$

const string Pattern = @"^h+\d+$";

它将匹配字符串,其在字符串的开头包含一个或多个h,然后数字一个或多个重复。示例:h0h34hh5hhhh789

如果您在开始时只需要一个h,请使用此正则表达式:^h\d+$。它将匹配:h0h34h789323

答案 1 :(得分:0)

^ 表示:匹配字符串中的起始位置。在基于行的工具中,它匹配任何行的起始位置。

我想你需要这种模式:

Regex regexObj = new Regex(@"\bh\d+\b", RegexOptions.Singleline | RegexOptions.IgnoreCase);

“\ b”表示字边界