LaTeX3 正则表达式不起作用

LaTeX3 正则表达式不起作用

我遇到了一个非常奇怪的错误,我想我没有像应该的那样使用 LaTeX3 正则表达式。我当前的文档如下所示:

\documentclass{standalone}

\ExplSyntaxOn
\regex_new:N{\myregex}
\regex_set:Nn{\myregex}{(.*)}
\NewDocumentCommand{\regextest}{m m m}{
    \regex_show:n{\myregex}
    \regex_match:nnTF{\myregex}{#1}{#2}{#3}
}
\ExplSyntaxOff

\begin{document}
\regextest{xxx}{T}{F}
\end{document}

但是输出文档显示:(F而正则表达式应该匹配任何内容),并且日志显示:

> Compiled regex {\myregex }:
+-branch
  char code 109 (m)
  char code 121 (y)
  char code 114 (r)
  char code 101 (e)
  char code 103 (g)
  char code 101 (e)
  char code 120 (x).
<recently read> }
                 
\regextest{xxx}{T}{F}

看起来正则表达式与正则表达式本身的名称相对应(myregex此处)。我做错了什么吗?如何让它工作?

答案1

您需要:N版本来引用包含正则表达式的命令,并且在所有N参数情况下都不要使用括号(它有时会意外起作用,但不要依赖它)

\documentclass{standalone}

\ExplSyntaxOn
\regex_new:N\myregex
\regex_set:Nn\myregex{(.*)}
\NewDocumentCommand{\regextest}{m m m}{
    \regex_show:N\myregex
    \regex_match:NnTF\myregex{#1}{#2}{#3}
}
\ExplSyntaxOff

\begin{document}
\regextest{xxx}{T}{F}
\end{document}

节目

> Compiled regex variable \myregex:
+-branch
  ,-group begin
  | any token, repeated 0 or more times, greedy
  `-group end.
<recently read> }

相关内容