PHPの正規表現はありませんバックスラッシュ
質問
だから私はしばらくの間、任意の正規表現を行っていなかったので、私は、私は私の記憶をブラッシュアップしようと思いました。私はa*b*c
にa<b>b</b>c
のような文字列を変換しようとしています。私はすでにその作業を得ているが、今私はa\*b\*c
にではなく、a\<b>b\</b>c
に変わってからa*b*c
のような文字列を維持したいです。ここで私が今使っているコードがあります:
$string = preg_replace("/\*([\s\S]*?)\*/", "<b>$1</b>", $input);
私は、アスタリスクの前にこの\\\\{0}
を入れて試してみた、それは動作しませんでした。どちら[^\\\\]
をやっています。
解決
否定後読みしてみてください
"/(?<!\\\\)\*([\s\S]*?)(?<!\\\\)\*/"
それは*
が先行していない場合は、これはのみ\
に一致します。
このはいますが、脆いです。文字列がescaped backslash \\*bold* text
であれば、それも失敗します。
所属していません StackOverflow