\regex_match가 예상대로 작동하지 않습니다.

\regex_match가 예상대로 작동하지 않습니다.

다음 매크로와 다음 입력이 있습니다.

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

문제는 A1과 B2만 추출하고 B2와 C3은 추출하지 않는다는 것입니다. 정규식에 어떤 문제가 있나요?

여기에 이미지 설명을 입력하세요

답변1

당신은 무엇을하는지 착각하고 있습니다 \regex_extract_all:nnN. 이 더 간단한 예를 생각해 보십시오.

\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 출력

보시다시피 bc, de또는 fg는 발견되지 않습니다. 이는 정규식 검색의 일반적인 동작입니다. 입력 문자열의 어떤 부분도 여러 일치 항목의 일부가 아닙니다. 대신, 일치 항목을 찾은 후 검색 엔진은 입력 문자열의 소비된 부분을 삭제하고 일치 항목 이후 계속 검색합니다.

관련 정보