我的问题是 [,\s|,|\s] 将匹配 ", " 为 "," 并留下额外的空间
所以我没有得到匹配的“星期六,星期一”:
(Thu|Fri|Sat)[,\s|,|\s](Mon|Tue)
通过匹配 (Thu|Fri|Sat)[,\s|,|\s] 我在“Sat”上得到匹配,但 match.Value 在“Sat”上(没有空格)
基本上我还想在 "Sat,Mon" "Sat, Mon" "Sat Mon" 但不是 "SatMon" 上获得匹配
谢谢
(Thu|Fri|Sat)[,\s]\s*(Mon|Tue)
这将允许逗号或空格以及之前的任何额外空格Mon
或Tue
您的版本将字符类和交替的概念混为一谈。交替,您在其中分隔选项的位置|
必须在括号内。(?: )
我们可以使用语法使这些括号不被捕获。
上面,我使用了一个字符类。要使用交替:
(Thu|Fri|Sat)(?:,|\s)\s*(Mon|Tue)
我曾经\s
表示空格,但出于您的目的,您可以用文字空格替换它们。
尝试以下
\s?[, ]\s?
以@Jay 回答为基础。我会简单地使用一个贪婪的匹配。
(Thu|Fri|Sat)(?:,|\s)+(Mon|Tue)