2014-06-10 5 views
1

У меня есть некоторые данные в следующем формате:Regex заменить второе вхождение символа

MM: SS: ммм где MM is minutes, ss is seconds и mmm is 3 digit milliseconds, как:

05:23:236 

Я пытаясь заменить второе вхождение толстой кишки с точкой:

05:23.236 

Я хотел бы использовать regex шаблон, чтобы сделать замены в редакторе, например Notepad ++, я придумал это регулярное выражение, чтобы соответствовать моему выражению:

\d{1,2}:\d{1,2}:\d{1,3} 

Но теперь, как я могу получить только second occurrence of colon, так что я могу заменить его dot?

EDIT: Обратите внимание, что данные я работаю с может прийти с 1-2 значного минуту, 1-2 значного секунды и 1-3 цифр миллисекунды

+0

какой язык вы используете? –

ответ

2

Используйте это регулярное выражение:

:(\d{1,3})$ 

заменить:

.$1 

Что выше делают выбираете последний : за которым следует миллисекунды 1-3 цифр ,

DEMO

2

Попробуйте это:

string pattern = @":(?=\d{3})"; 
    string input = "your string"; 
    string replacement = "."; 
    Regex rgx = new Regex(pattern); 
    string result = rgx.Replace(input, replacement); 
1

ваше регулярное выражение было хорошо, вы просто должны сделать группу, а затем заменить их, называя их снова:

выбор:

(\d{1,2}:\d{1,2}):(\d{1,3}) 

заменить:

$1\.$2 
0

Поиск: :(\d{1,3})$

Заменить: .\1 или .$1 в зависимости от вашего вкуса регулярных выражений

Смежные вопросы