2011-08-16 25 views
1

我有一個由用戶輸入的字符串,我想將該字符串嵌入到正則表達式中。有沒有像SQL查詢中的參數一樣嵌入參數值的方法?如何使用正則表達式匹配運行時參數?

例如,我可以這樣做:

string myRegex = "[abc]" + myParameter + "[xyz]"; 

,但這不會工作,因爲myParameter可能包含正則表達式的特殊字符。

通過使用參數來修復SQL注入。如何對正則表達式執行相同的操作?

請注意myParameter可以包含整個unicode中的任何字符,除了可能的控制字符,儘管我希望一個通用的解決方案將允許甚至控制字符匹配。

回答

0

取決於手頭的正則表達式引擎我相信。

在Java中,你通常做

"[abc]" + Pattern.quote(myParameter) + "[xyz]" 

或者(如果myParameter不包含\E),你可以做

"[abc]\\Q" + myParameter + "\\E[xyz]" 
+1

在你的第二個例子,如果'myParameter'包含'會發生什麼\ \ E'裏面? –

+0

@MainMa,你當然是對的。稍作編輯答覆。 – aioobe