2010-06-08 50 views
1

(從http://www.simple-talk.com/dotnet/asp.net/regular-expression-based-token-replacement-in-asp.net/)我使用下面的正則表達式表達定期匹配功​​能

(?<functionName> [^ \ $] *?)\((?:(?<PARAMS>。**? )(?:?,|(= \)?)))*)

它工作正常,除非我什麼參數,例如 作爲內包括括號 「<b>你好<b> renderHTML(」」 GetData(12)「」)「

所以我想要「GetData(12)」,而不是「GetData(12」)。

如果用雙引號括起來,有沒有辦法忽略任何匹配?

回答

1

有些方法可以忽略引號內的parens,但這不能解決您的問題。 C#中的函數調用不能與正則表達式匹配。正則表達式不能匹配嵌套結構,例如它們的方式都是parens和<出現在函數調用中。要匹配這些,你需要使用各種語法。

我前陣子我寫了一篇博客文章,其進入更詳細一點關於這個問題

我的意思並不是要避開這裏的答案。但是對這個問題的任何回答都會被一個稍微複雜的(或者有時甚至更簡單的)函數調用所打破。

+0

我已閱讀帖子,但沒有提出可能的問題答案。我可以問你會爲解決方案做什麼?我不想要任何太複雜的東西,因爲只有很少的命令可用。 在此先感謝。 – Podge 2010-06-08 14:52:44

+0

@Podge,唯一真正的答案是爲該語言編寫完整的解析器。或者是一個能夠正確匹配'(''和'<''')的黑客。 – JaredPar 2010-06-08 14:57:03