gpt4 book ai didi

ruby - 重复正则表达式以匹配数学符号然后数字失败

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:36 25 4
gpt4 key购买 nike

我正在尝试将 Mathematica 表达式(如 1+21*2/3....)匹配到无穷大。有人可以解释为什么我的正则表达式匹配下面的最后一个案例,以及如何修复它以便它只匹配有效的表达式(可能永远延伸)?

perms=["12+2*4","2+2","-2+","12+34-"]
perms.each do |line|
puts "#{line}=#{eval(line)}" if line =~ /^\d+([+-\/*]\d+){1,}/
end

我期望输出是:

12+2*4=20
2+2=4

最佳答案

[character set] 中,- 字符定义了字符的范围——想想 [a-z][0-9]。如果要匹配文字 -,它必须是第一个或最后一个字符。

/^\d+(?:[+\/*-]\d+)+$/

其他:{1,} 正好是 +;你也需要在最后锚定,所以你不匹配 1+2+

关于ruby - 重复正则表达式以匹配数学符号然后数字失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35134081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com