1

それで、しばらく正規表現をしていなかったので、自分の記憶をブラッシュアップしようと思いました。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}これをアスタリスクの前に入れてみましたが、うまくいきませんでした。どちらもしませんでした[^\\\\]

4

1 に答える 1

2

否定後読みを試してください:

"/(?<!\\\\)\*([\s\S]*?)(?<!\\\\)\*/"

*これは、 a が前にない場合にのみ a に一致し\ます。

ただし、これは脆弱です。文字列が の場合も失敗しますescaped backslash \\*bold* text

于 2010-10-26T17:49:58.203 に答える