<div dir="ltr"><div>1. I am aware of issues 34304 and 28450. I am writing because I think those fixes are inadequate. This is my proposed language change to <a href="https://docs.python.org/3/library/re.html#re.sub">https://docs.python.org/3/library/re.html#re.sub</a></div><div><br></div><div>re.sub(pattern, repl, string, count=0, flags=0)<br>Return the string obtained by replacing the leftmost non-overlapping occurrences of pattern in string by the replacement repl. If the pattern isn’t found, string is returned unchanged. repl can be a string or a function; if it is a string, any backslash escapes in it are processed. <span style="background-color:rgb(0,255,0)">This includes common re forms such as "\d". It also means the raw string prefix "r'" will <b><u><i>not</i></u></b> work the way you might expect.</span> <span style="background-color:rgb(147,196,125)">***If you want to replace %d with literal \d, you need to repeat the backslash 4 times:</span><br><br><span style="background-color:rgb(147,196,125)">    pattern = re.sub('%d', '\\\\d+', pattern)</span><br><br><span style="background-color:rgb(147,196,125)">or use a raw string literal and repeat the backslash 2 times:</span><br><br><span style="background-color:rgb(147,196,125)">    pattern = re.sub('%d', r'\\d+', pattern)***</span><br><span style="background-color:rgb(255,255,255)"> <br>That is, \n is converted to a single newline character ...'*</span><br>################################################</div><div>I have always been told that '\n' was **already** a single character:<br>        >>> s = "How many chars in \n?"<br>        >>> len(s)<br>        20<br>        >>> s2 = "How many chars in n?"<br>        >>> len(s2)<br>        20<br>So this sentence means nothing to me. <br>################################################</div><div><br>Unknown escapes of ASCII letters are reserved for future use and treated as errors...<br><br></div><div>###############################################<br>I would never in a <i><u>million</u></i> years have guessed that '\d' was an "unknown escape". It is far too fundamental to regex for me to conceive of it that way. Why didn't you tell us what the right way to do it is? If I had not found  <a href="https://bugs.python.org/issue34304#msg322854">https://bugs.python.org/issue34304#msg322854</a> I would STILL not know how to fix this problem. I am confident I am not the only one. <br><br><br>***Source of some of the new language: <a href="https://bugs.python.org/issue34304#msg322854***">https://bugs.python.org/issue34304#msg322854***</a><br></div><div><br></div><div>I am not able to log in to the bug tracker. I don't know why. I tried posting about it as an issue on github, but I don't see it now. Maybe it has to be moderated? <br></div><div><br></div><div><br></div><div><br></div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><strong style="color:rgb(0,0,0);font-family:Tahoma,sans-serif;font-size:12px;letter-spacing:0.5px"><em>“None of you has faith until he loves for his brother or his neighbor what he loves for himself.”</em></strong><br></div></div></div></div>