2012-04-18 45 views
2

我想匹配的一些子串,如日期在一個月爲一個字符串「21」或「22」或「23」,所以我用這個模式做了一個正則表達式:東西我擔心的有關正則表達式

((\d{1,2})(st)|(nd)|(rd)|(th)). 

我做了這些組,因爲我想替換。但是當我匹配一些像「2012年3月21日星期一」這樣的字符串時,它總是匹配兩個子字符串:Mo'nd'ay March'21st'2012.

所以我很困惑它爲什麼匹配「Mo'nd'ay 「?

回答

2

因爲您有一組缺失的括號。嘗試:

((\d{1,2})((st)|(nd)|(rd)|(th))) 

你有什麼,匹配:

 (\d{1,2})(st) 
    OR (nd) 
    OR (rd) 
    OR (th) 
+1

非常感謝。忘了這個父母。 – Gang 2012-04-18 02:33:23

2

你不必在你的|的正確括號。你有((\d{1,2})(st)|(nd)|(rd)|(th)),但你應該有:(\d{1,2})(st|nd|rd|th)

您與字符串nd,rd,th或(一個或兩個數字後跟st)匹配。

相關問題