我想創建一個正則表達式(在PHP)匹配這些文本:表達與多個{}塊
#{text}
#{text1}{text2}
#{text1}{numbers}{text2}
#{text1}{text with spaces}{numbers}{text2}
等等。基本上第一個街區只能容納沒有空間的文字,其餘的則可以容納任何東西。之後,獲取匹配那些text1 ...數字等我一直在嘗試一些正則表達式,但它沒有成功。這是最後一個:
/#{(\w+)}({([\ a-zA-Z0-9*])})*/U
在此先感謝!
編輯:就像@stema的建議,我改變了我的正則表達式這一個:
/#\{(\w+)\}(\{([^}]*)\})*/
我避免了Ungreedy標誌,因爲它不是在所有:)幫助表達。然而,結果並不像我需要儘可能多的:
array(4) {
[0]=>
string(42) "#{text1}{text with spaces}{numbers}{text2}"
[1]=>
string(5) "text1"
[2]=>
string(7) "{text2}"
[3]=>
string(5) "text2"
}
看來,其間的參數不被解析(看起來怪我)。
它失敗了:當試圖解析最後一個例子(有4個塊)時,我得到了這些匹配:#{text1}和text1 – Korcholis
看起來你只是在第二個括號內有一個字符'{([\ a- zA-Z0-9 *])}'應該像'{([\ a-zA-Z0-9 *] +)}' – devsnd
我更新了我的答案。 – stema