diff --git a/coalib/parsing/StringProcessing.py b/coalib/parsing/StringProcessing.py index 5f08612bb3..a969ab3bbd 100644 --- a/coalib/parsing/StringProcessing.py +++ b/coalib/parsing/StringProcessing.py @@ -365,7 +365,7 @@ def unescape(string): :param string: The string to unescape. """ - regex = r"\\(.)" + regex = r"\\(.)|\\$" def replacement_function(match): return match.group(1) diff --git a/coalib/tests/parsing/StringProcessingTest.py b/coalib/tests/parsing/StringProcessingTest.py index 312836faf8..6cc485dee0 100644 --- a/coalib/tests/parsing/StringProcessingTest.py +++ b/coalib/tests/parsing/StringProcessingTest.py @@ -491,7 +491,7 @@ def set_up_unescape(self): r"out1 'str1''str2''str3' out2", r"", r"out1 out2 out3", - self.bs, + r"", self.bs] def assertSearchForResultEqual(self, @@ -1158,6 +1158,12 @@ def test_unescape(self): for elem in compare: self.assertEqual(elem[0], elem[1]) + # Test unescape() for some special possible flaws. + def test_unescape_custom(self): + self.assertEqual(unescape("hello\\"), "hello") + self.assertEqual(unescape("te\st\\\\"), "test\\") + self.assertEqual(unescape("\\\\\\"), "\\") + def test_position_is_escaped(self): test_string = r"\\\\\abcabccba###\\13q4ujsabbc\+'**'ac###.#.####-ba" result_dict = {