【发布时间】:2014-09-30 20:54:14
【问题描述】:
我有一个正则表达式列表,我遍历这些正则表达式以查找字符串的匹配模式。
我想获取与“00000.00”完全匹配的正则表达式的索引,即 1。但是,0 的正则表达式也返回 true,但只有当存在长度为 5 的数字或字符串时才应返回 true 或6.
意思是,12345 和 123456 应该有效,但 12345.0 或 123456.0 不应该。
List<Regex> regexPatterns = new List<Regex>{
new Regex(@"\b\d{5,6}\b"), // 0
new Regex(@"\b\d{5,6}[.](00)\b") // 1
}
string text = "00000.00";
for( int i = 0; i < regexPatterns.Count; i++ ) {
if( regexPatterns.IsMatch(text) ) return i;
}
当我希望它返回 1 时,这会一直为 00000.00 返回 0。
** 索引是有意义的,所以重新排序是不行的。
【问题讨论】:
-
我认为您的问题是句点充当单词边界,导致匹配发生在您的第一个表达式上。如果您可以反转表达式并先测试较长的表达式,那么您应该得到一个匹配项。