需要检测句子中的工作日名称列表,以逗号,单词AND和“&”分隔符号与正则表达式。
我可以混合这种模式:
\b(sunday|monday|tuesday|wednesday|thursday|friday|saturday)(?:s)?\b
(,|\band\b|&)\s?
所以我可以得到这个结果:
“这只是星期一,没人关心星期一。” false
没有商品
“我喜欢星期日和星期六”true
有超过1场比赛,和分隔符
“周二,周三,周五,晚上11点至凌晨12点”的快乐时光“true
3个工作日,逗号分隔符
答案 0 :(得分:2)
这是一个详尽的解决方案,有一些alterations
。
正则表达式:
((sunday|monday|tuesday|wednesday|thursday|friday|saturday)s?,?\s+){2,}|((sunday|monday|tuesday|wednesday|thursday|friday|saturday)s?,?\s+)+(and\s|&\s)((sunday|monday|tuesday|wednesday|thursday|friday|saturday)s?,?)
<强>解释强>
((sunday|monday|tuesday|wednesday|thursday|friday|saturday)s?,?\s+){2,}
匹配以逗号分隔的天数列表。如果在一周的最后一天之前有和或&amp; ,则此部分将进行匹配。
((sunday|monday|tuesday|wednesday|thursday|friday|saturday)s?,?\s+)+
与 and
或 &
之前的列表相匹配。
(and\s|&\s)((sunday|monday|tuesday|wednesday|thursday|friday|saturday)s?,?)
匹配一周的最后一天。
的 Regex101 Demo 强>
答案 1 :(得分:0)
<强>正则表达式强>
(((sunday|monday|tuesday|wednesday|thursday|friday|saturday)(?:s)?\s?(?:,|and|&)?\s?){2,})