2012-04-18 2 views
2

Я хочу, чтобы соответствовать какой-то подстроке, как день в месяце, как «21» или «22» или «23» в строке, так что я сделал регулярное выражение, используя этот шаблон:Что касается меня о регулярном выражении

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

Я сделал эту группу, потому что хочу заменить. Но когда я встречаю какую-то строку вроде «Понедельник 21 марта 2012 года», она всегда совпадает с двумя подстроками: Mo'nd'ay, март '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

2

Вы не правильно круглые скобки вокруг | с. У вас есть ((\d{1,2})(st)|(nd)|(rd)|(th)), но у вас должно быть: (\d{1,2})(st|nd|rd|th).

Вы соответствующие строки nd, rd, th, или (одна или две цифры, за которой следует st).