私はRubyのptyを試してみるために少しテストをしていました。私は主な問題は、正規表現は非貪欲であるということだと思います。
The whole output is ||||
Rubyの非貪欲な正規表現:ptyと期待
password1234
Thank you! Your password is: p||||
output1 = |
|
output1 = |password1234
|
output1 = |Thank you! Your password is: p|
:出力を印刷するとき、私はこれを取得残念ながら
require 'pty'
require 'expect'
#$expect_verbose = true
#answer = %r/Thank you! Your password is: \w+/
PTY.spawn("ruby ./inputs.rb") do |reader, writer, pid|
writer.sync = true
reader.expect(/[email protected] password:/) do |output|
writer.puts("password1234")
end
#reader.expect(answer) do |output|
#reader.expect(/Thank you! Your password is: \w{6,}/) do |output|
#reader.expect(/Thank you! Your password is: (\w+)/) do |output|
reader.expect(/Thank you! Your password is: \w+/) do |output|
puts "The whole output is ||||#{output}||||\n"
output.first.each do |line|
puts "output1 = |#{line}|\n"
end
end
end
:
この
はinputs.rb
と呼ばれるプログラムである:
puts "Give me [email protected] password:"
password = gets.chomp()
puts "Thank you! Your password is: #{password}"
そして、これはtest.rb
と呼ばれるプログラムであり、なぜですか?
Thank you! Your password is: p||||
Thank you! Your password is: password1234||||
の代わりに ?
これは正常ですか?場合は:この動作を変更する方法はありますか?私が試してみました
もの:
- rubular上の正規表現:それは動作します。
- コメントのすべての選択肢:誰も働いていない(完全なパスワードを取得する)。
- http://www.42klines.com/2010/08/14/what-to-expect-from-the-ruby-expect-library.html
Rubyのバージョン:1.8.7
のUbuntu:10.04(明晰リンクス)
私はあなたが持つかもしれないアイデアを理解するだろう。どうもありがとうございました。
実際の質問を正確に示すために質問をトリミングする必要があります。 – sawa