我有这个tex:
hello \o{test} how are you?
我想将其转换为:
hello <span>test</span> how are you?
如何?
答案 0 :(得分:2)
没有正则表达式:使用str_replace()
<?php
$string = 'hello \o{test} how are you?';
echo str_replace(['\o{','}'],['<span>','</span>'],$string);
?>
使用正则表达式并使用preg_replace()
<?php
$re = '/\\\\o\{([^}]+)\}/m';
$str = 'hello \\o{test} how are you?';
$subst = '<span>$1</span>';
echo preg_replace($re, $subst, $str);
?>
答案 1 :(得分:1)
您可以使用以下表达式:
\\o\{([^}]+)}
\\o
匹配o
。\{
匹配{
。([^}]+)
捕获组。匹配并捕获}
以外的任何内容。}
与}
匹配。替换为:
<span>\1<\/span>
正则表达式演示here。
Sed 实施:
$ echo "hello \o{test} how are you?" | sed -r 's/\\o\{([^}]+)}/<span>\1<\/span>/g'
hello <span>test</span> how are you?
Php 实施:
<?php
$input_lines="hello \o{test} how are you?";
echo preg_replace("/\\\\o{([^}]+)}/", "<span>$1<\/span>", $input_lines);
打印:
hello <span>test<\/span> how are you?