我無法訪問代碼,這是通過一個接口,只允許我編輯解析用戶響應的正則表達式。我需要後用戶的文本中提取的重量,他們的文字之類的東西:我需要一個正則表達式來捕獲字符串中的數字
wt 172.5 172.5 lbs 180 wt. 173.22 172,5
我需要捕捉的重量爲float場,但我想它限制爲最多1位小數。我嘗試使用/(?<val>[\d+((\.|,)\d\d?)?]/
但它只能保存第一個數字「1」在現場
我無法訪問代碼,這是通過一個接口,只允許我編輯解析用戶響應的正則表達式。我需要後用戶的文本中提取的重量,他們的文字之類的東西:我需要一個正則表達式來捕獲字符串中的數字
wt 172.5 172.5 lbs 180 wt. 173.22 172,5
我需要捕捉的重量爲float場,但我想它限制爲最多1位小數。我嘗試使用/(?<val>[\d+((\.|,)\d\d?)?]/
但它只能保存第一個數字「1」在現場
有時候看起來最簡單的是沒有的。我建議使用此正則表達式:
r = /(?<=\A|\s)\d+(?:[.,]\d)?(?=\d|\s|\z)/
我們可以可替換地定義使用擴展或自由間距模式正則表達式(由最終/
之後加入改性劑x
),這使我們能夠包括文檔:
r =/
(?<=\A|\s) # match beginning of string or space in a positive lookbehind
\d+ # match one or more digits
(?:[.,]\d)? # optionally (? after non-capture group) match a . or , then a digit
(?=\d|\s|\z) # match a digit, space or the end of the string in a positive lookahead
/x
"wt 172.5"[r] #=> "172.5"
"172.5 lbs"[r] #=> "172.5"
"180"[r] #=> "180"
"wt. 173.22"[r] #=> "173.2"
"172,5"[r] #=> "172,5"
"A1 143.66"[r] #=> "143.6"
"A1 1.3.4 43.6"[r] #=> "43.6"
\d+(?:[,.]\d{1,2})?
猜你想要這個。 []
是角色類,而不是你的想法。你的角色類只捕獲你定義的所有角色中的一個角色。
查看演示。
未來,您可能希望在選擇答案之前等待一段時間。快速選擇之後可能會出現帶有問題答案的評論,可能會阻礙其他更好的答案,對於那些仍在努力解答他們的人來說,imo是不禮貌的。許多人在這裏等待至少幾個小時。關鍵是沒有急於求成。 –
@CarySwoveland謝謝!新的論壇,這是有幫助的反饋 –