2010-10-26 159 views
1

所以我一段時間都沒有做任何正則表達式,所以我想我會記住我的記憶。我試圖將a*b*c這樣的字符串轉換爲a<b>b</b>c。我已經得到了這個工作,但現在我想保留一個像a\*b\*c這樣的字符串變成a\<b>b\</b>c,而不是a*b*c。以下是我現在使用的代碼:PHP正則表達式無反斜槓

 $string = preg_replace("/\*([\s\S]*?)\*/", "<b>$1</b>", $input); 

我試圖把這個\\\\{0}在星號之前,並沒有奏效。 [^\\\\]也沒有。

回答

2

嘗試負回顧後:

如果它不是由前面 \
"/(?<!\\\\)\*([\s\S]*?)(?<!\\\\)\*/" 

這僅匹配*

雖然這是脆弱的;如果字符串是escaped backslash \\*bold* text,它也會失敗。

+0

當我嘗試這樣做時出現錯誤:'警告:preg_replace()[function.preg-replace]:編譯失敗:缺失)在偏移26' – Entity 2010-10-26 17:53:25

+0

當我使用四個反斜槓而不是兩個時,需要它!謝謝! – Entity 2010-10-26 17:59:16

+0

啊,是的,沒錯。你確實需要四個反斜槓 - 我已經糾正了我的答案。 – 2010-10-26 18:02:54

相關問題