在紅寶石我有一個這樣的字符串:紅寶石,從字符串的正則表達式提取物價格
str= 43,69 €
是可能的正則表達式獲得43,69
?
我曾嘗試用:
/\d+(?:\.\d+)?/
但輸出是不正確的:43.0
在紅寶石我有一個這樣的字符串:紅寶石,從字符串的正則表達式提取物價格
str= 43,69 €
是可能的正則表達式獲得43,69
?
我曾嘗試用:
/\d+(?:\.\d+)?/
但輸出是不正確的:43.0
這應該工作
/\d+(?:[.,]\d+)?/
的[.,]
部分小數點分隔符相匹配的一個點或一個逗號。如果你確信泰德小數點分隔符將是一個逗號,你可以使用這個:
/\d+(?:,\d+)?/
在一個字符類('[[...]')中,您不必轉義點'.',它總是會匹配實際的點。正如你所看到的,'「,」=〜/ [。] /'是'nil'(因爲它只匹配實際的點)。並且管道字符'|'也將匹配一個管道字符('「|」=〜/ [|] /'yield'0'(即在位置0處匹配)),它不會像字符中的OR類。一個字符類已經像一個OR(內部的任何字符)。因此,只需執行'[。,]'而不是'[\。|,]''。 –
感謝丹尼爾爲此精確。我相應地更新了我的答案 – Benj
'/ \ d +?(?:\ d +)/' – devnull
您正在使用的變體將工作,如果小數點分隔符是一個'點'。 – devnull
我想你已經得到了你的答案,但對於我使用的其他正則表達式情況:http://rubular.com/來測試它們。這非常有用。 –