gpt4 book ai didi

ruby - 如何从 StringScanner 捕获项目?

转载 作者:数据小太阳 更新时间:2023-10-29 07:50:08 27 4
gpt4 key购买 nike

我正在使用 Ruby 的 StringScanner 规范化一些英文文本。

def normalize text
s = ''
ss = StringScanner.new text
while ! ss.eos? do
s += ' ' if ss.scan(/\s+/) # mutiple whitespace => single space
s += 'mice' if ss.scan(/\bmouses\b/) # mouses => mice
s += '' if ss.scan(/\bthe\b/) # remove 'the'
s += "#$1 #$2" if ss.scan(/(\d)(\w+)/) # should split 3blind => 3 blind
end
s
end

normalize("3blind the mouses") #=> should return "3 blind mice"

相反,我只是得到 "mice"

StringScanner#scan 未捕获 (\d)(\w+)

最佳答案

要访问捕获的 StringScanner(在 Ruby 1.9 及更高版本中),您可以使用 StringScanner#[] :

  s += "#{ss[1]} #{ss[2]}" if ss.scan(/(\d)(\w+)/) # splits 3blind => 3 blind

在 Ruby 2.1 中,您应该能够通过名称进行捕获(参见 Peter Alfvin 的 link )

  s += "#{ss[:num]} #{ss[:word]}" if ss.scan(/(?<num>\d)(?<word>\w+)/)

关于ruby - 如何从 StringScanner 捕获项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19989493/

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