正则表达式与字符串不匹配

时间:2015-01-12 23:59:13

标签: c# regex

我正在尝试使用正则表达式在字符串中查找字符串序列。

我正在寻找的模式是:

dd.dd.dddd dd:dd:dd // d是0-9的数字

我的正则表达式是:

Regex r = new Regex(@"(\d[0-9]{2}.\d[0-9]{2}.\d[0-9]{4}\s\d[0-9]{2}:\d[0-9]{2}:\d[0-9]{2})$");

我现在正在尝试检查,如果字符串" 27.11.2014 09:14:59"是匹配正则表达式,但遗憾的是它不匹配。

string str= "27.11.2014 09:14:59";
Regex r = new Regex(@"(\d[0-9]{2}.\d[0-9]{2}.\d[0-9]{4}\s\d[0-9]{2}:\d[0-9]{2}:\d[0-9]{2})$");
test = r.IsMatch(str,0);

//output: test=false

任何人都知道为什么String与正则表达式不匹配?

2 个答案:

答案 0 :(得分:3)

\d[0-9]{2}匹配三个数字:

\d      first digit
[0-9]   second digit
{2}     causes the previous expression ([0-9]) to match again

如果删除\d的所有出现,您的模式应该有效。你应该逃避所有点.,因为现在它们匹配任何字符,而不仅仅是.

答案 1 :(得分:0)

正如Rawing所说,上面的正则表达式试图匹配3位数而不是1位数。对于想要了解正则表达式应该如何的每个人:

@"(\d{2}.\d{2}.\d{4}\s\d{2}:\d{2}:\d{2})$"

这至少对我有用。