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

本文关键字:不匹配 字符串 正则表达式 | 更新日期: 2023-09-27 18:37:13

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

我正在寻找的模式是:

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

有人知道为什么字符串与该正则表达式不匹配吗?

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

'd[0-9]{2}匹配三位数字:

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

如果删除所有出现的'd,则模式应该有效。不过,您应该.转义所有点,因为现在它们与任何字符匹配,而不仅仅是.

正如 Rawing 已经说过的,上正则表达式试图匹配 3 位数字而不是一个数字。 对于每个想知道正则表达式应该是什么样子的人:

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

这很有效,至少对我来说是这样。