正则表达式逗号或逗号空格或空格

4
我的问题是[,\s|,|\s]会将", "匹配为","并留下一个额外的空格,所以我无法使用它来匹配"Sat, Mon"。
(Thu|Fri|Sat)[,\s|,|\s](Mon|Tue)

通过在 (Thu|Fri|Sat)[,\s|,|\s] 上匹配,可以匹配到 "Sat, ",但是 match.Value 是 "Sat,"(没有空格)

基本上,我还想匹配到 "Sat,Mon"、"Sat, Mon"、"Sat Mon",但不匹配 "SatMon"

谢谢

3个回答

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

这将允许逗号或空格,并在 MonTue 之前添加任意空格。

您的版本混淆了字符类和替代的概念。使用替代,将选项用 | 分隔必须放在括号内。我们可以使用 (?: ) 语法使这些括号为非捕获型。

上面我使用了字符类。要使用替代:

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

我使用\s来表示空格,但是根据您的需求,您可以将其替换为实际的空格。


我必须等待2分钟才能接受,但这似乎起了作用,谢谢。Regx和LINQ是我希望更好地了解的两种技术。 - paparazzo
@Blam 我加回了一些细节以保证完整性。 - Jay

3
请尝试以下代码:\s?[, ]\s?

2
为了进一步解释@Jay的答案,我会简单地使用贪婪匹配。
(Thu|Fri|Sat)(?:,|\s)+(Mon|Tue)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接