From: "mame (Yusuke Endoh)" Date: 2012-11-02T22:11:03+09:00 Subject: [ruby-core:48758] [ruby-trunk - Bug #7092][Feedback] StringScanner start-of-line matches false positives, while lookbehind for a newline gives false negatives Issue #7092 has been updated by mame (Yusuke Endoh). Status changed from Open to Feedback Assignee set to mame (Yusuke Endoh) Target version set to 2.0.0 Sorry for late reply. Honestly, it is difficult to say whether it is intended or a bug because there is no strscan maintainer. But since 1.8, StringScanner#scan has behaved so. I guess there is some existing programs that depends on the behavior. Therefore, I'd like not to change the behavior unless there is no special reason. Do you have any special reason? Or do you just want to confirm? -- Yusuke Endoh ---------------------------------------- Bug #7092: StringScanner start-of-line matches false positives, while lookbehind for a newline gives false negatives https://bugs.ruby-lang.org/issues/7092#change-32238 Author: jayferd (Jay Adkisson) Status: Feedback Priority: Normal Assignee: mame (Yusuke Endoh) Category: Target version: 2.0.0 ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] To reproduce: >> require 'strscan' >> ss = StringScanner.new("ab") >> ss.scan(/./) => "a" >> ss.scan(/^./) # expecting nil, since the head is in the middle of a line => "b" As a workaround-that-didn't-work, I also tried looking behind for a newline, which seems never to match, even with the `m` flag. >> ss = StringScanner.new("a\nb") >> ss.scan(/../m) => "a\n" >> ss.scan(/(?<=\n)./m) # expecting "b", since the previous char is a newline => nil -- http://bugs.ruby-lang.org/