Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式:获取TeX命令_Php_Regex_Tex - Fatal编程技术网

Php 正则表达式:获取TeX命令

Php 正则表达式:获取TeX命令,php,regex,tex,Php,Regex,Tex,我有一个字符串,比如: $str = "\textaolig 3 \texthtbardotlessjvar \textrthooklong B \textbenttailyogh ; \textinvomega q \textscaolig . \textbktailgamma p \textinvsca r \textscdelta D \textctinvglotstop ! \textinvscripta s \textscf 2 \textctjvar

我有一个字符串,比如:

$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]+)
但是没有运气。有人能帮我吗


善意的问候,

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

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

我不知道TeX命令,但我已尝试匹配
[\w\s\;]+
,因此如果需要,请更正它:

$str='\textaolig 3\texthtbardotlessjvar\textrhooklong
B\texttailyogh\textinvomega q\textscaolig
. \textbktailgamma p\textinvsca r\textscdelta
D\textctinvglotstop\textinvscripta s\textscf
2\textctjvar I\textlfishhookrlig t\textsck';
preg\u match\u all(“/\”(?P\w+)/s“,$str,$m);
var_dump($m[“tex”);

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

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

我不知道TeX命令,但我已尝试匹配
[\w\s\;]+
,因此如果需要,请更正它:

$str='\textaolig 3\texthtbardotlessjvar\textrhooklong
B\texttailyogh\textinvomega q\textscaolig
. \textbktailgamma p\textinvsca r\textscdelta
D\textctinvglotstop\textinvscripta s\textscf
2\textctjvar I\textlfishhookrlig t\textsck';
preg\u match\u all(“/\”(?P\w+)/s“,$str,$m);
var_dump($m[“tex”);

TeX命令是类似\textaolig的命令。在你的帮助下,我终于做对了。preg_match_all('/\\\([\w]+)/s',$str,$m);完成了任务。非常感谢。TeX命令是类似\textaolig的命令。在你的帮助下,我终于做对了。preg_match_all('/\\\([\w]+)/s',$str,$m);完成了任务。非常感谢你。
$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"]);