\regex_match no funciona como se esperaba

\regex_match no funciona como se esperaba

Tengo la siguiente macro y la siguiente entrada:

\def\something#1{
    \regex_extract_all:nnN{
            ([A-Za-z]{1}\d{1,2})\s*-\|\s*([A-Za-z]{1}\d{1,2})
        }{#1}\l_my_seq
    \seq_map_inline:Nn\l_my_seq{##1,\par}
}

\something{A1-|B2-|C3}

El problema es que solo extraigo A1 y B2, y no B2 y C3. ¿Qué hay de malo con la expresión regular?

ingrese la descripción de la imagen aquí

Respuesta1

Estás equivocado en lo que \regex_extract_all:nnNhace. Considere este ejemplo más simple.

\documentclass{article}

\ExplSyntaxOn
  \def\something#1{
      \regex_extract_all:nnN{..}{#1}\l_my_seq
      \seq_map_inline:Nn\l_my_seq{##1,~}
  }
\ExplSyntaxOff

\begin{document}

\something{abcdefg}

\end{document}

Salida MWE

Como puede ver, bco denunca fgse encuentran. Este es el comportamiento habitual de las búsquedas de expresiones regulares: ninguna parte de la cadena de entrada forma parte de múltiples coincidencias. Más bien, después de encontrar una coincidencia, el motor de búsqueda descarta cualquier parte consumida de la cadena de entrada y continúa buscando la coincidencia.

información relacionada