已回答從閱讀我所能得到的結果來看,這似乎不可能在正則表達式中完成,所以我使用正則表達式來匹配函數模式,然後使用支撐位置來標記結果。不是最好的答案,但解決不了。匹配函數調用列表中的第一個函數
我試圖在功能列表中匹配第一個單一功能例如
$string = "user('firstname'), user('lastname')"
但我不知道如何成功模式相匹配的子功能調用,可以包含任何類型的參數,即一個字符串,如「我的字符串)」,例如
$string = "user('my string)!'), user('lastname')"
因此,任何模式不能在自身內匹配任何括號,即用戶(「我的字符串)。
我不關心匹配不同類型的參數,而只是把整個第一個函數抓住。當前的正則表達式如下。
'/([a-z0-9\_]+)\((.*)\)/'
我會想象某種負前瞻的/後面是必需的斷言,但我還沒有達到構建模式,水平。任何幫助將不勝感激。
正則表達式的味道是PHP。
編輯1功能列表也可能是這樣的。
user((5*5)+10), user(otherfunc())
在這種情況下,圖案將具有相匹配的用戶((5 * 5)10)在此之後後處理用戶(otherfunc())。我有一個表達式標記器,可以將參數和表達式進行分解。除了多種埋藏功能之外,它確實很棒。
逃命那些壞字符字符串,那麼你的正則表達式將是一個* LOT *更容易。 – Blender 2011-03-28 21:06:58
@Blender - 不幸的是不是一個選項。 – buggedcom 2011-03-28 21:16:41