我想拆分包含等式的以下字符串:
sentence = "The integral of y^{n} is \frac{y^{n + 1}}{n + 1} when n \neq -1:"
预期结果是:
[y^{n}, \frac{y^{n + 1}}{n + 1}, n \neq -1:]
我可以使用以下方法删除字符串。
phrase = 'The integral of '
sentence.gsub(/#{phrase}/, '')
# => "y^{n} is \frac{y^{n + 1}}{n + 1} when n \neq -1:"
is = 'is'
sentence.gsub(/#{is}/, '')
# => y^{n} \frac{y^{n + 1}}{n + 1} when n \neq -1:"
when_word = 'when'
sentence.gsub(/#{when_word}/, '')
# => "y^{n} \frac{y^{n + 1}}{n + 1} n \neq -1:"
我尝试了split
,但没有得到预期的结果。
sentence.split(', ')
# => ["y^{n} \frac{y^{n + 1}}{n + 1} n \neq -1:"]
如何获得所需的结果?
答案 0 :(得分:3)
根据我对你的问题的理解,这就是你想要的。
str = "The integral of y^{n} is \frac{y^{n + 1}}{n + 1} when n \neq -1:"
str.split(/\bThe integral of\b | \bis\b | \bwhen\b/)[1..-1]
#=> ["y^{n}", "\frac{y^{n + 1}}{n + 1}", " n \neq -1:"]
答案 1 :(得分:2)
我认为这是最直接的。
string.match(/\AThe integral of (.*) is (.*) when (.*)\z/m).captures
#=> ["y^{n}", "\frac{y^{n + 1}}{n + 1}", "n \neq -1:"]
答案 2 :(得分:0)
由于反斜杠是公式的一部分,因此需要使用额外的反斜杠进行转义。 (如果从文件或其他来源读取字符串,而不是在源代码中指定它,则不需要这样做。)这是一个执行该操作然后进行解析的脚本。它并不像Anurag的解决方案那么优雅,但它确实起到了作用。
#!/usr/bin/env ruby
s = "The integral of y^{n} is \\frac{y^{n + 1}}{n + 1} when n \\neq -1:"
s = s.split(/ of /).last
frag1, rest = s.split(/ is /)
frag2, frag3 = rest.split(/ when /)
puts %Q{Fragment 1: "#{frag1}"}
puts %Q{Fragment 2: "#{frag2}"}
puts %Q{Fragment 3: "#{frag3}"}
=begin
Outputs:
Fragment 1: "y^{n}"
Fragment 2: "\frac{y^{n + 1}}{n + 1}"
Fragment 3: "n \neq -1:"
=end