图案:
(.*?) (?:(\d+)\:)??(?:(\d+)\:)??(\d+)
输入
song1.mp3 2:35
song2.mp3 1:2:45
song3.mp3 45
代替:
the song "$1" is $3min and $4sec
我想要的结果
the song "song1.mp3" is 2min and 35sec
the song "song2.mp3" is 2min and 45sec
the song "song3.mp3" is min and 45sec
发生的事情是微小的部分试图不发生,并且由于某种原因,.*?
在空间发生之前最左边的非贪婪模式( )而不是最右边的非贪婪模式((?:(\d+)\:)??
)。
这似乎是一种奇怪的行为。我在使用 flash的http://gskinner.com/RegExr/和使用 JS的http://regexpal.com/中尝试过
我可以在最后使用它来修复它$
,但是如果我不想匹配结尾怎么办?.*$
打破它。
我主要关心 .NET 和 JS 解决方案。