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 に答える