2

我有一个像这样的字符串:

$str = "\textaolig 3 \texthtbardotlessjvar  \textrthooklong
    B \textbenttailyogh ; \textinvomega q \textscaolig
    . \textbktailgamma p \textinvsca r \textscdelta
    D \textctinvglotstop ! \textinvscripta s \textscf
    2 \textctjvar I \textlfishhookrlig t \textsck";

我想用正则表达式获取所有 TeX 命令(\textaolig 等)。我试过了:

\\([[a-z]\s]+)

但没有运气。有人可以帮我吗?

亲切的问候,

4

1 回答 1

4

首先,您必须用单引号将字符串括起来,因为在使用双引号时,如果您使用反斜杠,它将尝试转义一个字符,这不是您的情况。

其次,您必须使用\\\\来匹配反斜杠。

我不知道 TeX 命令,但[\w\s\.;]+如果需要,我会尝试匹配,以便更正它:

$str = '\textaolig 3 \texthtbardotlessjvar \textrthooklong
    B \textbenttailyogh ; \textinvomega q \textscaolig
    . \textbktailgamma p \textinvsca r \textscdelta
    D \textctinvglotstop ! \textinvscripta s \textscf
    2 \textctjvar I \textlfishhookrlig t \textsck';
    preg_match_all('/\\\\(?P<tex>\w+)/s', $str, $m);

    var_dump($m["tex"]);
于 2013-03-26T00:44:24.583 回答