我无法访问代码,这是通过一个接口,只允许我编辑解析用户响应的正则表达式。我需要后用户的文本中提取的重量,他们的文字之类的东西:我需要一个正则表达式来捕获字符串中的数字
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谢谢!新的论坛,这是有帮助的反馈 –