我的字符串看起來是這樣的:如何使用正則表達式從標籤之後提取價格?
Rental DurationPrice60-day$47.8090-day$56.23120-day$60.92
或
Rental DurationPrice90-day$47.80180-day$56.23
或
的任意組合:
30-day and/or 60-day and/or 90-day and/or 180-day
我想拍攝後面的價格這些時間框架。
我的字符串看起來是這樣的:如何使用正則表達式從標籤之後提取價格?
Rental DurationPrice60-day$47.8090-day$56.23120-day$60.92
或
Rental DurationPrice90-day$47.80180-day$56.23
或
的任意組合:
30-day and/or 60-day and/or 90-day and/or 180-day
我想拍攝後面的價格這些時間框架。
這個正則表達式捕獲所有nn-day字段後面的價格。
/(?:30|60|180)-day\$(\d+\.\d\d)/
使用它作爲
prices = "Rental DurationPrice60-day$47.8090-day$56.23120-day$60.92"
prices.scan(/(?:30|60|180)-day\$(\d+\.\d\d)/)
所有的價格獲取到一個數組。
此正則表達式將捕獲所有價格:(?:\d{2,}-day\$(\d+\.\d{2}))
而不是使用更復雜的正則表達式,我會跟String.scan
去,讓它走過的字符串:
'Rental DurationPrice60-day$47.8090-day$56.23120-day$60.92'.scan(/\$[\d.]+/)
[
[0] "$47.8090",
[1] "$56.23120",
[2] "$60.92"
]
如果你不」不想貨幣指標可以後置處理的值,剝離的第一個字符:
'Rental DurationPrice60-day$47.8090-day$56.23120-day$60.92'.scan(/\$[\d.]+/).map{ |s| s[1..-1] }
[
[0] "47.8090",
[1] "56.23120",
[2] "60.92"
]
或者使用一個微小的不同正則表達式與flatten
方法:
'Rental DurationPrice60-day$47.8090-day$56.23120-day$60.92'.scan(/\$([\d.]+)/).flatten
[
[0] "47.8090",
[1] "56.23120",
[2] "60.92"
]