【发布时间】:2021-02-01 07:00:37
【问题描述】:
我正在尝试创建一个匹配此字符串 {Date HH:MM:ss} 的正则表达式,但诀窍是:HH、MM 和 ss 是可选的,但它必须是“HH”,而不仅仅是“H” "(同样适用于 MM 和 ss)。如果出现单个“H”,则不应匹配该字符串。
我知道我可以使用 H{2} 来匹配 HH,但我似乎无法使用该功能加上 ? 来匹配零次或一次(零是因为它是可选的,并且最多一次)。
到目前为止,我正在这样做(这显然不起作用):
Regex dateRegex = new Regex(@"\{Date H{2}?:M{2}?:s{2}?\}");
下一个问题。现在我已经在第一个字符串上找到了匹配项,我只想将 HH:MM:ss 部分放入另一个字符串中(这将是 TimeStamp 对象的格式)。
我用了同样的方法,像这样:
Regex dateFormatRegex = new Regex(@"(HH)?:?(MM)?:?(ss)?");
但是当我在“{Date HH:MM}”上尝试时,我没有得到任何匹配。为什么?
如果我添加这样的空格Regex dateFormatRegex = new Regex(@" (HH)?:?(MM)?:?(ss)?");,我有结果,但我不想要空格...
我认为第一个括号需要转义,但\( 在这种情况下不起作用。我猜是因为它不是要匹配的字符串的一部分的括号,而是一个关键字符。
【问题讨论】: