我试图匹配mathematica表达式1+2和1*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
Run Code Online (Sandbox Code Playgroud)
我期望输出为:
12+2*4=20
2+2=4
Run Code Online (Sandbox Code Playgroud)
在a里面[character set],-角色定义了一系列角色 - 想想[a-z]或[0-9].如果要匹配文字-,则必须是第一个或最后一个字符.
/^\d+(?:[+\/*-]\d+)+$/
Run Code Online (Sandbox Code Playgroud)
其他事情:{1,}确切地说+; 你也需要在最后锚定,所以你不匹配1+2+
| 归档时间: |
|
| 查看次数: |
45 次 |
| 最近记录: |