我有一個特殊字符列表,其中包括^ $ () % . [ ] * + - ?
。我想把%
放在這個特殊字符前面的一個字符串值中。使用正則表達式爲特殊字符添加前綴
我需要這個來生成一個Lua腳本來在Redis中使用。
例如Test$String?
必須更改爲Test%$String%?
。
有沒有辦法在C#中使用正則表達式來做到這一點?
我有一個特殊字符列表,其中包括^ $ () % . [ ] * + - ?
。我想把%
放在這個特殊字符前面的一個字符串值中。使用正則表達式爲特殊字符添加前綴
我需要這個來生成一個Lua腳本來在Redis中使用。
例如Test$String?
必須更改爲Test%$String%?
。
有沒有辦法在C#中使用正則表達式來做到這一點?
在C#代替,你只需要一個Regex.Replace
:
var LuaEscapedString = Regex.Replace(input, @"[][$^()%.*+?-]", "%$&");
的[][$^()%.*+?-]
字符類將匹配單個字符,或者是]
,[
,$
,^
,(
,)
,%
, .
,*
,+
,?
或-
,並且將以%
字符預先等待的替換模式將其重新插入$&
反向引用。
這裏的前瞻只是一個多餘的開銷(或者是你老闆炫耀的招數)。
請參閱[IDEONE演示](http://ideone.com/aufXMp)。 –
你可以使用這個表達式:([\\^$()%.\\[\\]*+\\-?])
它將匹配和字符類中捕捉人物。然後,您可以使用$1
來引用捕獲的字符,並在其之前插入%
,如下所示:%$1
。
下面是一個示例代碼和demo:
string input = "Test$String?";
string pattern = "([\\^$()%.\\[\\]*+\\-?])";
string replacement = "%$1";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, replacement);
Console.WriteLine("Original String: {0}", input);
Console.WriteLine("Replacement String: {0}", result);
您可以使用向前看符號與%
/(?=[]*+$?)[(.-])/
(?=[]*+$?)[(.-])
模型正先行更換,檢查字符以下任何一個從altenation []
。如果是的話,有%
爲什麼使用lookahead?以'$&'作爲替換模式的反向引用的字符類將會執行。 –
@WiktorStribiżew即使這樣。不同的方式來解決同樣的問題,我猜。 – nu11p01n73R
您可以使用(?= [\^\ $()\%。[] * + - \?])正則表達式替換字符串爲「%」
是的。你有沒有看過「Regex.Replace」呢? – yaakov
@codran是的,但我想用自己和%替換每個角色。 'Regex.Replace'可以做到這一點? – Fred
是的。看看[替換](https://msdn.microsoft.com/en-us/library/ewy2t5e0(v = vs.110).aspx)。 – yaakov