我遇到了一个非常奇怪的错误,我想我没有像应该的那样使用 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> }