2012-04-26 177 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) 
相關問題