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.

Reply via email to