【发布时间】:2015-01-10 14:51:16
【问题描述】:
我需要从给定文本中查找检索时间,例如今晚加入我们共进晚餐,直到晚上 10 点#LeBunSocial @3compasses #e8 #Dalston
对于上述情况,下面的代码可以正常工作
if (Regex.IsMatch(str, @"(?'hour'\d{2})(?'ampm'AM|am|PM|pm|Pm)", RegexOptions.Compiled)) //2 digits + pm/AM" (without space)
{
m = Regex.Match(str, @"(?'hour'\d{2})(?'ampm'AM|am|PM|pm|Pm)", RegexOptions.Compiled);
result = true;
counter++;
}
但由于某些业务原因,我也必须执行以下代码。正则表达式不应该匹配晚上 10 点,因为下面提到了 1 位限制,但它仍然与下面的正则表达式匹配。如何避免呢?以下代码仅适用于(例如下午 1 点)1 位数字
if (Regex.IsMatch(str, @"(?'hour'\d{1})(?'ampm'AM|am|PM|pm|Pm)", RegexOptions.Compiled)) // 1 digit + AM/PM without space
{
m = Regex.Match(str, @"(?'hour'\d{1})(?'ampm'AM|am|PM|pm|Pm)", RegexOptions.Compiled);
result = true;
counter++;
}
【问题讨论】:
标签: regex