C# · 12月 31, 2021

c# – 正则表达式匹配零或一次字符串

我一直在这个时间已经过了一个多小时,没有成功,这是我的头.

我正在尝试使一个与此字符串匹配的正则表达式{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}?\}”);

请帮助我,抱歉,noob问题.

FB.

下一个问题,现在我有第一个字符串的匹配,我只想采用HH:MM:ss部分,并把它放在另一个字符串(这将是一个TimeStamp对象的格式).

我用同样的方法,像这样:

Regex dateFormatRegex = new Regex(@”(HH)?:?(MM)?:?(ss)?”);

但是,当我尝试“{日期HH:MM}”我没有比赛,为什么?

编辑:如果我添加这样的空间Regex dateFormatRegex = new Regex(@“(HH)?:?(MM)?:?(ss)?”);我有结果,但我不想要的空间…
我认为第一个父母需要被转义,但(在这种情况下,我不会工作,我猜是因为它不是一个字符串的一部分,而是一个关键字符.

解决方法 (H {2})?匹配零个或两个H字符.

然而,在你的情况下写两次会更可读:

Regex dateRegex = new Regex(@”\{Date (HH)?:(MM)?:(ss)?\}”);

此外,请确保没有任何功能可用于您尝试做的任何事情.解析日期是很常见的,大多数编程语言在标准库中都有功能 – 我几乎可以打赌1k的声誉,.NET也有这样的功能.