之間我使用PHP,試圖從文本降價的一個味道轉換爲另一種味道。正則表達式替換字符周圍,同時保持串
例如,如果我有字符串**some text**
,則應將其替換爲字符串'''some text'''
(將每邊的**替換爲'''三撇號)。但是,字符串**some other text
不應該有任何更換完成,因爲它不與**
目前結束了,我現在用的是下面的代碼:
function convertBoldText($line){
#Regex replace double asterisk IF if is FOLLOWED by a non-asterisk character
$tmp = preg_replace('/\*{2}(?=[^\*])/', "'''", $line);
#Regex replace double asterisk IF if is PRECEDED by a non-asterisk character
return preg_replace('/(?<=[^\*])\*{2}/', "'''", $tmp);
}
,但這種代碼也替換字符串中的星號是開始但不要以雙星號結束,這不應該。
如何使用正則表達式來代替雙星號,當且僅當兩個星號匹配(例如開閉雙星號存在並相互匹配)?
最大的挑戰來自於,你有兩個前面提到的例子相結合,就像這樣:
** these first asterisks should NOT be replaced **but these ones SHOULD**
爲什麼不更換這一點 - '**這些第一星號不應該被更換**'? – splash58