G
gabriel.birke
Consider the following test case:
require 'test/unit'
class RegexTest < Test::Unit::TestCase
def test_escaping
numbers = "12345"
assert_equal "12345", numbers.gsub(/(2|4)/, '\1')
assert_equal "12345", numbers.gsub(/(2|4)/, "\\1")
assert_equal "1\\ 23\\ 45", numbers.gsub(/(2|4)/, '\\ \1')
assert_equal "1\\ 23\\ 45", numbers.gsub(/(2|4)/, "\\ \\1")
assert_equal "1\\23\\45", numbers.gsub(/(2|4)/, '\\\1')
assert_equal "1\\23\\45", numbers.gsub(/(2|4)/, "\\\\1")
end
end
require 'test/unit/ui/console/testrunner'
Test::Unit::UI::Console::TestRunner.run(RegexTest)
The last two assertions fail (With the message <"1\\23\\45"> expected
but was <"1\\13\\15">.) - but why?
Is this a bug in the regex implementation or is there something wrong
with my regular expression or substitution string?
require 'test/unit'
class RegexTest < Test::Unit::TestCase
def test_escaping
numbers = "12345"
assert_equal "12345", numbers.gsub(/(2|4)/, '\1')
assert_equal "12345", numbers.gsub(/(2|4)/, "\\1")
assert_equal "1\\ 23\\ 45", numbers.gsub(/(2|4)/, '\\ \1')
assert_equal "1\\ 23\\ 45", numbers.gsub(/(2|4)/, "\\ \\1")
assert_equal "1\\23\\45", numbers.gsub(/(2|4)/, '\\\1')
assert_equal "1\\23\\45", numbers.gsub(/(2|4)/, "\\\\1")
end
end
require 'test/unit/ui/console/testrunner'
Test::Unit::UI::Console::TestRunner.run(RegexTest)
The last two assertions fail (With the message <"1\\23\\45"> expected
but was <"1\\13\\15">.) - but why?
Is this a bug in the regex implementation or is there something wrong
with my regular expression or substitution string?