Heim > Fragen und Antworten > Hauptteil
Ich habe den folgenden regulären Ausdruck in meinem PHP-Code:
// markers for italic set *Text* if (substr_count($line, '*')>=2) { $line = preg_replace('#\*{1}(.*?)\*{1}#', '<i></i>', $line); }
Es funktioniert großartig.
Wenn $line
持有 <br>
z.B
*This is my text<br>* Some other textDann berücksichtigt die Regex den Text noch und wandelt ihn um in:
<i>This is my text<br></i> Some other textDas Ziel besteht darin, den Text nicht zu übersetzen, wenn
auftritt. Wie mache ich das mit regulären Ausdrücken – mit dem sogenannten „negativen Lookahead“ oder wie ändere ich den vorhandenen regulären Ausdruck? <br>
Hinweis: Zeichenfolgen wie
sollten dennoch berücksichtigt und konvertiert werden. *This is my text*<br>Some other text<br> 和再次 *italic*<br>END
und dann Regex verwenden, um das Ergebnis zu durchlaufen? ! $line
P粉3962485782024-03-30 20:42:40
使用匹配你不想要的内容并丢弃技术,您可以在 PHP (PCRE) 中使用此正则表达式:
\*[^*]*
\*(*SKIP)(*F)|\*([^*]*)\*
并替换为$1
PHP 代码:
$r = preg_replace('/\*[^*]*
\*(*SKIP)(*F)|\*([^*]*)\*/'), "$1", $input);
说明:
\*
:匹配*
[^*]*
:匹配 0 个或多个非 *
字符
:匹配
\*
:匹配结束 *
(*SKIP)(*F)
:要丢弃并跳过此匹配的 PCRE 动词\*([^*]*)\*
:匹配 *
s 括起来的字符串