diff --git a/lib/rouge/lexers/sed.rb b/lib/rouge/lexers/sed.rb index 14bab41520..3b715502c8 100644 --- a/lib/rouge/lexers/sed.rb +++ b/lib/rouge/lexers/sed.rb @@ -140,7 +140,7 @@ def replacement end # alternate regex rage delimiters - rule %r((\\)(.)(\\.|.)*?(\2)) do |m| + rule %r((\\)(.)((?:\\.|.)*?)(\2)) do |m| token addr_tok, m[1] + m[2] delegate regex, m[3] token addr_tok, m[4] diff --git a/spec/lexers/sed_spec.rb b/spec/lexers/sed_spec.rb index 1e30932cc6..81cc1260b6 100644 --- a/spec/lexers/sed_spec.rb +++ b/spec/lexers/sed_spec.rb @@ -18,4 +18,16 @@ assert_guess :source => '#!/usr/bin/sed' end end + + describe 'lexing' do + include Support::Lexing + + it 'parses regex addresses with custom delimiter (issue #860)' do + assert_tokens_equal '\#foobar#n', + ['Keyword.Namespace', '\#'], + ['Literal.String.Regex', 'foobar'], + ['Keyword.Namespace', '#'], + ['Keyword', 'n'] + end + end end