如何使用\pdfmatch
正则表达式,在哪里可以找到所有可用 pdfTeX 原语的列表和说明以及有关它们的使用的帮助?
编辑
pdfTeX 文档的最新一期现在包含该命令的简短描述和示例。
答案1
参见 pdftex 1.30.0公告, 尤其:
- \pdfmatch [icase] [subcount <number>}] {<pattern>}{<string>}
Implements pattern matching using the POSIX regex.
It returns the same values as \pdfstrcmp, but with the following
semantics:
-1: error case (invalid pattern, ...)
0: no match
1: match found
Options:
* icase: case insensitive matching
* subcount: it sets the table size for found subpatterns.
A number "-1" resets the table size to the start default.
- \pdflastmatch <number>
The result of \pdfmatch is stored in an array. The entry "0" contains
the match, the following entries submatches. The positions of the
matches are also available. They are encoded:
<position> "->" <match string>
The position "-1" with an empty string indicates that this entry is not
set.
答案2
具体来说,对于正则表达式,该l3regex
包提供了一个跨引擎解决方案(需要 eTeX 和\strcmp
)。
例如,
\RequirePackage{l3regex}
\ExplSyntaxOn
\regex_extract_all:nnN { \w+ } { Hello,~ world! } \l_foo_seq
\seq_show:N \l_foo_seq
显示Hello
和world
作为结果序列(列表)的两个项目。
以下是各种问题的列表,其中一个答案使用l3regex