我想基本上匹配任何以逗号分隔的工作日列表的文本。
(?i)(every (mon|tue|wed|thu|fri|sat|sun)[A-Za-z]{3,5}, .*+,
(mon|tue|wed|thu|fri|sat|sun)[A-Za-z]{3,5})
以上是我所拥有的,我想使其与以下字符串匹配。如果只提供2个工作日,我不需要帮助。
Every mon, tue, wednesday
Every wed, Saturday, Friday, sun.
答案 0 :(得分:2)
答案 1 :(得分:0)
您可能会列出缩写词,并有选择地匹配全名,方法是使用英文字母和空格,并用逗号和空格隔开。
将其添加到组中,并重复0次以上。之后,添加没有逗号的组,以确保您至少匹配一天。
(?i)\bevery (?:(?:mon(?:day)?|tue(?:sday)?|wed(?:nesday)?|thu(?:rsday)?|fri(?:day)?|sat(?:urday)?|sun(?:day)?), )*(?:mon(?:day)?|tue(?:sday)?|wed(?:nesday)?|thu(?:rsday)?|fri(?:day)?|sat(?:urday)?|sun(?:day)?)\b
说明
(?i)\bevery
不区分大小写的修饰符(?:
没有捕获组
(?:mon(?:day)?|tue(?:sday)?|wed(?:nesday)?|thu(?:rsday)?|fri(?:day)?|sat(?:urday)?|sun(?:day)?),
匹配任何列出的内容,后跟逗号和空格)*
关闭非捕获组并重复0次以上(?:
非捕获组
mon(?:day)?|tue(?:sday)?|wed(?:nesday)?|thu(?:rsday)?|fri(?:day)?|sat(?:urday)?|sun(?:day)?
匹配列出的任何一个)\b
关闭非捕获组并添加单词边界以防止成为较大单词的一部分要只匹配几天,您可以将第一个非捕获组的*
quantifier更新为+
或{2,}
。