\regex_match funktioniert nicht wie erwartet

\regex_match funktioniert nicht wie erwartet

Ich habe folgendes Makro und folgende Eingabe:

\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}

Das Problem ist, dass ich nur A1 und B2 extrahiere, nicht aber B2 und C3. Was ist falsch an dem regulären Ausdruck?

Bildbeschreibung hier eingeben

Antwort1

Sie liegen falsch \regex_extract_all:nnN. Betrachten Sie dieses einfachere Beispiel.

\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}

MWE-Ausgabe

Wie Sie sehen, werden bc, deoder fgnie gefunden. Dies ist das übliche Verhalten bei der Suche mit regulären Ausdrücken: Kein Teil der Eingabezeichenfolge ist Teil mehrerer Übereinstimmungen. Vielmehr verwirft die Suchmaschine nach dem Finden einer Übereinstimmung alle verbrauchten Teile der Eingabezeichenfolge und setzt die Suche nach der Übereinstimmung fort.

verwandte Informationen