时间戳的正则表达式模式

4
我需要为此编写一个正则表达式模式:
[0:00:07]

这是我的代码:
string pattern = "[[0-9]{1,1}:[0-9]{1,2}:[0-9]{1,2}]";

我得到了这样的结果:0:00:07]。可以看到,我的正则表达式错过了第一个'['。我该怎么解决呢?

2
转义 [] - vks
3个回答

6

如果你需要在正则表达式中匹配字面上的 [ 或者 ],你需要对它进行转义:

string pattern = @"\[[0-9]:[0-9]{1,2}:[0-9]{1,2}\]";

请见RegexStorm示例
请注意,{1,1}等同于没有量词(即前置子模式将匹配一次)。
另外,应注意的是最终的]不需要转义,因为.NET正则表达式引擎会将其视为字面值(因为它无法将其解析为字符类分隔符的一部分)。但是,保持您的模式不含歧义并在模式中任何特殊字符出现时进行转义是一个好主意(如果您想将正则表达式移植到另一个平台,这将非常方便)。

1
感谢您的时间! - Alexander

3

要转义第一个方括号。

   \[[[0-9]{1,1}:[0-9]{1,2}:[0-9]{1,2}]

这应该是有效的。其他答案中也有替代表示方式。


2
\[[0-9]{1,1}:[0-9]{1,2}:[0-9]{1,2}\]

您需要转义 [] 符号


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接