Bug #9517

why not match ?

Added by kk kk 2 months ago. Updated 2 months ago.

[ruby-core:60687]
Status:Open
Priority:Normal
Assignee:-
Category:regexp
Target version:-
ruby -v:ruby 2.0.0p353 (2013-11-22 revision 43784) [i686-linux] Backport:1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN

Description

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  #why?


History

#1 Updated by Heesob Park 2 months ago

I think this issue is not a bug.

Because s1 string contains "\n" character, the match fails.
Try with
r = Regexp.new '[\001\002\003]\000(.*?)\xAA' , Regexp::MULTILINE , 'n'

#2 Updated by kk kk 2 months ago

ok, why not set Regexp::MULTILINE by default ?

Also available in: Atom PDF