2014-11-26 15 views
1

Я хотел бы определить год в предложении последней, как найти в Regex?Найти последнюю группу чисел в regex

напр:

строка = некоторые из текстов 1999 некоторые из текстов 1986 некоторые из текста;

string = Regex.Replace(string, @"(\b(1[7-9]|2[0-9])\d{2}\b)", "<Year>$1</Year>"); 

мой освобожденный выход:

some of texts 1999 some of texts <year>1986</year> 

Примечание: год будет больше, чем один раз Спасибо, Саран

+0

'некоторые Text' после года ... это будет или нет? – vks

ответ

0
\b(\d+)\b(?=[^\d]*$) 

или

\b((?:1[7-9]|2[0-9])\d{2})\b(?=[^\d]*$) 

Try this.Replace по <year>$1</year>. Смотрите демоверсию.

http://regex101.com/r/oE6jJ1/20

Редактировать

\b((?:1[7-9]|2[0-9])\d{2})\b(?!.*\b((?:1[7-9]|2[0-9])\d{2})\b) 

Используйте это, если есть номера ahead.See демо.

http://regex101.com/r/oE6jJ1/21

+0

Спасибо за быстрый ответ. если моя строка нравится: некоторые тексты 1999 некоторые из текстов 1986 около 23 текста, его не работает –

+0

@saravanans http://regex101.com/r/oE6jJ1/21 – vks

+0

@saravanans, в которых случаи не работали – vks

2

или использовать этот шаблон

(.*)(\b(?:1[7-9]|2[0-9])\d{2}\b) 

и заменить ж/$1<Year>$2</Year>
Demo

+0

Это было бы Первое, что я думаю о том, когда я вижу «сопоставление последнего из« некоторого шаблона » – nhahtdh

+0

@nhahtdh, точно, hwnd и vks уже думают об этом :-) –

+0

Спасибо за быстрый ответ, его работа отлично. –