我希望它以某种方式返回450,$ 1只是一个愚蠢的变量名称.这就像格式的反面.实现这一目标的clojure正则表达式魔法是什么?
(re-something #"$1\sUSD" "450 USD")
Run Code Online (Sandbox Code Playgroud)
user=> (re-find #"(\d\d\d) (USD)" "450 USD")
["450 USD" "450" "USD"]
user=> (nth *1 1)
"450"
Run Code Online (Sandbox Code Playgroud)
我喜欢使用重新查找,if-let和destructuring.我经常用以下模式编写解析代码:
(def currency-regex #"(\d+) ([A-Z]{3})")
(defn parse-currency [s]
(if-let [[_ amount currency] (re-find currency-regex s)]
(process amount currency)
(signal-error s)))
Run Code Online (Sandbox Code Playgroud)