2013-08-21 90 views
1

我想匹配的字符串perecent值:匹配第一個正則表達式浮點百分比?

Starting task, 13.73 % (11.17 fps, avg 14.66 fps, ETA 00h03m53s) 

問題是我的正則表達式的作品,但它所有的三個浮點值一致:

\d*\.\d+%? 

我得到三個值回:

11.17 14.66

  • 13.73
  • 11.17
  • 14.66

我只想匹配13.73。

有什麼建議嗎?

回答

3

你的模式的問題是它會匹配一個數字,緊跟一個可選的百分號。由於百分比不是該模式的必需部分,所以其他數字恰好相符。

你可以試試這個模式(注意\s*意味着零個或多個空格):

\d*.\d+\s*% 

這將返回13.73 %。如果你不希望包括%標誌,使用一組:

(\d*.\d+)\s*% 

然後提取相關文本。

或者,你可以使用一個前瞻:

\d*.\d+(?=\s*%)