如果它位于两个连续的$$之间,我需要正则表达式去除文本中的所有标记。两个连续的$$形成一个区块。
例如: - 以下文字
This is <outtag>just</outtag> a test from $$outside and
<intag>from</intag> $$ inside and again <outtag>I am </outtag>inside out $$so I have
<intag>to go <\intag>in$$ go outside.
必须删除intag
,因为它位于由两个连续$$形成的块内。我试图将它与正则表达式匹配
(\$\$.*?)<(.+?)>(.*?)<\/\2>.*?\$\$
但我不知道如何重复在$$内发生的标记,而且我也不知道如何制作连续两个$的块。
@nauriel我有一个mathjax代码,如果有两个下划线或其他一些降价字符,则由markdown处理标记。
是的,我总是有一个偶数的$$。
@sln只是标记<intag></intag>
,而不是标记的全部内容。
答案 0 :(得分:1)
非常简单直接:
$input = 'This is <outtag>just</outtag> a test from $$outside and
<intag>from</intag> $$ inside and again <outtag>I am </outtag>inside out $$so I have
<intag>to go </intag>in$$ go outside.';
$output = preg_replace_callback('/\$\$.*?\$\$/s', function($m) {
return preg_replace('/<(.+?)>(.*?)<\/\1>/s', '$2', $m[0]);
}, $input);
echo $output;