質問

だから私はしばらくの間、任意の正規表現を行っていなかったので、私は、私は私の記憶をブラッシュアップしようと思いました。私はa*b*ca<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であれば、それも失敗します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top