Perhaps because you have single quotes inside double quotes so everything inside the single quotes is automatically escaped?
Walter -- Walter Rowe, Division Chief Infrastructure Services Division Mobile: 202.355.4123 On Jan 9, 2024, at 9:04 AM, Rob Wagner <[email protected]> wrote: Right, but why doesn’t the \\d need to be double-backslashed? Backslash-d is regex for matching on a digit. I just don’t get why doubling the backslash is needed on the 1 but not on the d. On Jan 9, 2024, at 7:53 AM, 'Rowe, Walter P. (Fed)' via Ansible Project <[email protected]> wrote: The \\1 must be double-backslashed because the backref needs to be backslash-digit (\1). Doubling the backslash escapes the backslash. Walter -- Walter Rowe, Division Chief Infrastructure Services Division Mobile: 202.355.4123 On Jan 8, 2024, at 6:57 PM, Rob Wagner <[email protected]> wrote: 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]<mailto:[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]<mailto:[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]<mailto:[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<https://groups.google.com/d/msgid/ansible-project/CAMc-rNPNqQMKKsqy2gwRBAt%2BEWnn%2B_rEY-CJo7sWJFhGnamLQQ%40mail.gmail.com?utm_medium=email&utm_source=footer>. -- 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]<mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/BECB61FE-847C-44CB-8FB2-6AC5489F052F%40nist.gov<https://groups.google.com/d/msgid/ansible-project/BECB61FE-847C-44CB-8FB2-6AC5489F052F%40nist.gov?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]<mailto:[email protected]>. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/1FB0916C-F39D-46F2-8544-1ED0FA528D5A%40gmail.com<https://groups.google.com/d/msgid/ansible-project/1FB0916C-F39D-46F2-8544-1ED0FA528D5A%40gmail.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/78355563-E8C3-42A9-939B-8F2A3D5E3316%40nist.gov.
