Ruby 为什么 2 个 String 不一样?

sevk · 2014年02月14日 · 最后由 sevk 回复于 2014年02月14日 · 2443 次阅读

class String
  def jhex
    self.split(/,|\s+/).map{|x| x.hex}.pack('c*')
  end
end
s  = "01 00 28 09 00 04 02 00 27 AA" .jhex
s1 = "01 00 05 09 00 04 02 00 0A AA" .jhex

s .force_encoding 'ascii-8bit'
s1.force_encoding 'ascii-8bit'

r = Regexp.new '[\001\002\003]\000(.*?)\xAA' , nil , 'n'

s .match(r)   #=> #<MatchData "\x01\x00(\t\x00\x04\x02\x00'\xAA" 1:"(\t\x00\x04\x02\x00'">
s1.match(r)   #=> nil  #这里竟然是 nil

共收到 3 条回复
1楼 已删除

#1楼 @bhuztez r没有状态。

s1明显有个\n在里面你需要m flag……

#3楼 @Kabie 哦,多谢,我失误了。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册