我正在研究腳本循環PHP文件和必要時重命名函數調用。這種選擇需要通過以下規則進行:PHP正則表達式負面看後面的斷言,preg_replace_callback
- NO函數聲明//功能測試(){
- NO靜態函數// SomeClass的:: STATICMETHOD()
- NO類函數// $類 - >()方法
- ONLY函數調用// myFunction的()
目前,我有以下的正則表達式:
preg_replace_callback("/((?<=function\s|\:\:|->)[a-z][a-zA-Z0-9\_]+)\(.*\)/i", 'test', $content);
- 函數名稱大多是用camelBack表示法編寫的。
- 有時函數名稱包含下劃線。
這是背後斷言正面看:它使所有NO :)
所以我必須改變它的消極的方式,但是這是我的問題分爲給定的規則。當我嘗試時,它沒有按照建議工作。
編輯
當我嘗試背後斷言
'?<!' instead of '?<='
負的外觀與上面的例子中給出了下面的輸出:
- EST()(第一遺漏)
- taticMethod()(缺少第一)
- ethod()(缺少第一)
- myFunction的()(正確)
它下降我不想匹配的函數的第一個字母。有誰知道如何去做這個訣竅?
什麼是不工作的建議? – stema 2012-03-28 10:34:52
當我嘗試使用上面的示例對assertion('?<!'而不是'?<=')進行負面審查時,它會給出以下輸出: est(),taticMethod(),ethod(),myFunction()。 它放棄我不想匹配的函數的第一個字母。 – 2012-03-28 11:45:05