的提取参数,我有以下的LaTeX命令:PHP preg_match_all:命令
\autocites[][]{}[][]{}
其中内[]
的参数都是可选的内部{}
别人是强制性的。
\autocites[a1][a2]{a3}[b1][b2]{b3}
\autocites[a1][a2]{a3}[b1][b2]{b3}[c1][c2]{c3}
...
它也可用于这样的::所述\autocites
命令可以由等的参数附加组进行扩展
\autocites{a}{b}
\autocites{a}[b1][]{b3}
\autocites{a}[][b2]{b3}
...
我想通过使用PHP中的正则表达式来提取它的参数。这是我第一次尝试:
/\\autocites(\[(.*?)\])(\[(.*?)\])(\{(.*?)\})(\[(.*?)\])(\[(.*?)\])(\{(.*?)\})/
虽然如果\autocites
只包含两组三个参数,我无法弄清楚如何得到它的未知数量的参数工作能正常工作。
我用下面的表达式也试过:
/\\autocites((\[(.*?)\]\[(.*?)\])?\{(.*?)\}){2,}/
这一次我能匹配更大的参数号码,但随后我不能提取所有的值,因为PHP永远只是给我的最后三个参数的内容:
Array
(
[0] => Array
(
[0] => \autocites[a][b]{c}[d][e]{f}[a][a]{a}
)
[1] => Array
(
[0] => [a][a]{a}
)
[2] => Array
(
[0] => [a][a]
)
[3] => Array
(
[0] => a
)
[4] => Array
(
[0] => a
)
[5] => Array
(
[0] => a
)
)
任何帮助,非常感谢。
仅仅匹配包含随机'(\ {。\} | \ [。\])*'变体的整个命令可能会更简单。然后使用第二个'preg_match_all'来提取单个参数。或者使用'?(DEFINE)'或者至少'/ x'修饰符来创建一个可管理的正则表达式。 – mario