如何编写可区分可选分组的瑞典路牌时间匹配正则表达式
瑞典路牌时间正则匹配解决方案
适配需求的正则表达式
你可以使用如下支持可选分组的正则实现需求:
^\D?(?<WeekdayFrom>\d+)\s?-\s?(?<WeekdayTo>\d+)(?:.*\n(?:\((?<SaturdayFrom>\d+)\s?-\s?(?<SaturdayTo>\d+)\)(?:.*\n(?<SundayFrom>\d+)\s?-\s?(?<SundayTo>\d+))?)?)?\s*$
逻辑说明
- 使用非捕获分组
(?:)包裹可选的周六、周日匹配段,配合?标记整个段为可选,满足部分路牌仅存在工作日、工作日+周六两种场景的匹配需求 - 保留原有命名分组的定义,不会混淆各分组对应的时间类型:
- 开头无括号的
digit-digit格式自动匹配工作日时间分组 - 被括号包裹的
(digit-digit)格式自动匹配周六时间分组 - 周六行之后出现的无括号
digit-digit格式自动匹配周日时间分组
- 开头无括号的
- 支持时间和减号之间的可选空格,同时允许时间段落前后存在其他非时间文本
匹配覆盖场景
该正则可以正确覆盖所有合法场景:
- 完整三层时间场景:
18-17 (18-17) 9-20
- 仅工作日+周六场景:
9-22 (19-20)
- 时间后带其他文本场景:
8-17 (9-13) Avgift Boende
- 仅工作日场景:
9-19 3 tim P-skiva
内容的提问来源于stack exchange,提问作者Paul Peelen
相关产品推荐
相关产品推荐

