3

我的问题是 [,\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" 上获得匹配

谢谢

4

3 回答 3

6
(Thu|Fri|Sat)[,\s]\s*(Mon|Tue)

这将允许逗号或空格以及之前的任何额外空格MonTue

您的版本将字符类和交替的概念混为一谈。交替,您在其中分隔选项的位置|必须在括号内。(?: )我们可以使用语法使这些括号不被捕获。

上面,我使用了一个字符类。要使用交替:

(Thu|Fri|Sat)(?:,|\s)\s*(Mon|Tue)

我曾经\s表示空格,但出于您的目的,您可以用文字空格替换它们。

于 2012-04-26T21:31:53.643 回答
2

尝试以下 \s?[, ]\s?

于 2012-04-26T21:32:11.950 回答
1

以@Jay 回答为基础。我会简单地使用一个贪婪的匹配。

(Thu|Fri|Sat)(?:,|\s)+(Mon|Tue)
于 2013-12-18T10:10:43.727 回答