2012-04-26 134 views
1

我的问题是[中,\ s |,| \ S]将匹配“‘如’,”并留下一个额外的空间正则表达式逗号或逗号分隔或空间

所以我没有得到一个匹配“星期六,星期一”用:

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

通过匹配上(星期四|星期五|星期六),\ S |,| \ S] 我得到一个匹配 “星期六”,但match.Value是“星期六”(无空格)

基本上我也想获得“周六,周一”“周六,周一”,“周六周一”的匹配,而不是“SatMon”

感谢

回答

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

这将使逗号或空格以及任何额外的空间MonTue

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

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

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

我已经使用\s表示空白,但对于你的目的,你可以使用一个字面上的空格替换它们。

+0

我必须等待2分钟才能接受,但似乎已经完成了这个技巧谢谢。 Regx和LINQ是我希望我更了解的两项技术。 – Paparazzi 2012-04-26 21:42:48

+0

编辑时删除了我实际使用的答案。 – Paparazzi 2012-04-27 01:47:15

+0

@Blam我添加了一些细节的完整性。 – Jay 2012-04-27 02:37:39

2

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

0

要建立在@Jay答案。我会简单地使用一个贪婪的比赛。

(Thu|Fri|Sat)(?:,|\s)+(Mon|Tue) 
相关问题