2016-02-19 89 views
-2

我可以代替regex在代碼中使用正則表達式是什麼:第一次出現在正則表達式

"<tr><td>Total</td><td class=\"bar\">561 of 931</td><td class=\"ctr2\">40%</td><td class=\"bar\">38 of 58</td><td class=\"ctr2\">34%</td><td class=\"ctr1\">58</td><td class=\"ctr2\">94</td>" .scan(regex).last

得到"40%"(第一百分比數字),而無需修改上面的代碼中的任何其他部分?

+0

您可以使用'\ d +%' –

+0

返回34%,代碼表示組的最後一個元素。 –

+1

這有效:'^ [\ S \ s] +?\ K \ d +%'。演示:https://regex101.com/r/aR5cU0/1。捕捉從開始到百分比的所有內容,然後重置匹配,然後捕獲百分比 – RedLaser

回答

3

我會做這樣的事:

regexp = /\A.*?(\d+%)/ 

matches = "<tr><td>Total</td><td class=\"bar\">561 of 931</td><td class=\"ctr2\">40%</td><td class=\"bar\">38 of 58</td><td class=\"ctr2\">34%</td><td class=\"ctr1\">58</td><td class=\"ctr2\">94</td>".scan(regexp).last 
puts matches 
#=> 40% 

說明:\A字符串開始處匹配,匹配.*?一切非貪婪(\d+%)最後的數量和百分比符號匹配。

相關問題