Thanks Matt, but I still don't get why the first parameter (\\d) MAY be double backslashed but the second parameter (\\1) MUST be double backslashed. However, I'm starting to think it's at the python level. https://stackoverflow.com/a/33582215 says Python's string parser causes both \d and \\d to become \d. But why? A little more searching takes me to https://docs.python.org/3/reference/lexical_analysis.html#escape-sequences, where I think I see why \\1 becomes \1 and \1 becomes a non-printable character (octal 1). But then, by analogy, \\d should become \d (it does) but why doesn't \d become an error (since it's not listed as a valid escape sequence).
Maybe I'll take this over to the Python list. On Mon, Jan 8, 2024 at 4:52 PM Matt Martz <[email protected]> wrote: > This is a result of some normalization code in jinja2 that attempts to > unescape strings: > > > https://github.com/pallets/jinja/blob/d594969d722ceb4e8f3da8861befc9c0ac87ae1b/src/jinja2/lexer.py#L647-L653 > > That code results in those becoming '^p(\\d+).*$' and '\\1'. > > Those 2 when statements, when processed by pyyaml become: > > ["( item | regex_replace('^p(\\d+).*$', '\\\\1') ) in s", > "( item | regex_replace('^p(\\\\d+).*$', '\\\\1') ) in s"] > > Then if we apply the .encode/.decode: > > >>> "( item | regex_replace('^p(\\d+).*$', '\\\\1') ) in > s".encode("ascii", "backslashreplace").decode("unicode-escape") > "( item | regex_replace('^p(\\d+).*$', '\\1') ) in s" > > >>> "( item | regex_replace('^p(\\\\d+).*$', '\\\\1') ) in > s".encode("ascii", "backslashreplace").decode("unicode-escape") > "( item | regex_replace('^p(\\d+).*$', '\\1') ) in s" > > -- > You received this message because you are subscribed to a topic in the > Google Groups "Ansible Project" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/ansible-project/A-QsBqBiWVk/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/ansible-project/CAD8N0v-Sf3AmrkEnFZZtxAbJHTUv%3D6gNezDkESTxoatHq-86YA%40mail.gmail.com > <https://groups.google.com/d/msgid/ansible-project/CAD8N0v-Sf3AmrkEnFZZtxAbJHTUv%3D6gNezDkESTxoatHq-86YA%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CAMc-rNPNqQMKKsqy2gwRBAt%2BEWnn%2B_rEY-CJo7sWJFhGnamLQQ%40mail.gmail.com.
