我得到一个方程(多项式)作为字符串,我试图用一个正则表达式将方程分解成组,其中表达式是真的。
到目前为止我所拥有的是:
>>> str = "13x^14-12x^3+x^3-11"
>>> puts str.split(/[+-]?\d*x?\^?\d*/)
["13x^14-12x^3+x^3-11"]
我想得到的是:["13x^14","-12x^3","+x^3","-11"]
我的表达式是如何工作的
发布于 2021-08-05 18:40:50
而不是使用拆分,您可以匹配所有的事件,并省略锚^
和$
。
当所有匹配以数字结尾时,可以更改最后一部分以匹配至少1位或更多位数\d+
,以防止空匹配,因为所有部分都是可选的。
str = '13x^14-12x^3+x^3-11'
str.scan(/[+-]?\d*x?\^?\d+/) do |match|
puts match.to_s
end
输出
13x^14
-12x^3
+x^3
-11
发布于 2021-08-05 18:36:07
如果使用正则表达式并将分隔符放入组内,拆分也将捕获分隔符。来源
str.split(/([+-]?\d*x?\^?\d*)/) - [""]
发布于 2021-08-05 20:15:33
如果使用gsub将+和-符号替换为"|+“和”AC.26-“,则可以使用split("|")
获取该信息。您不需要正则表达式来拆分字符串。
str = "13x^14-12x^3+x^3-11"
str.gsub(/[+]/,"|").gsub(/[-]/,"|-").split("|")
["13x^14","-12x^3","x^3","-11"]
https://stackoverflow.com/questions/68670977
复制相似问题