我有一个包含^ $ ( ) % . [ ] * + - ?
的特殊字符列表。我想把%
放在字符串值中的这个特殊字符前面。
我需要这个来生成在Redis中使用的Lua脚本。
例如,Test$String?
必须更改为Test%$String%?
。
有没有办法在C#中使用正则表达式?
答案 0 :(得分:3)
在C#中,您只需要一个Regex.Replace
:
var LuaEscapedString = Regex.Replace(input, @"[][$^()%.*+?-]", "%$&");
请参阅regex demo
[][$^()%.*+?-]
字符类将匹配单个字符,]
,[
,$
,^
,(
,{ {1}},)
,%
,.
,*
,+
或?
并将其重新插入{{1使用-
字符预先挂起的替换模式中的反向引用。
前瞻只是一个多余的开销(或者是老板的炫耀技巧)。
答案 1 :(得分:2)
您可以使用此正则表达式:([\\^$()%.\\[\\]*+\\-?])
它将匹配并捕获字符类中的字符。然后,您可以使用$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);
答案 2 :(得分:2)
您可以使用前瞻并替换为%
/(?=[]*+$?)[(.-])/
(?=[]*+$?)[(.-])
Postive lookahead,检查字母[]
中是否跟随任何一个字符。如果是,请使用%
答案 3 :(得分:0)
你可以使用(?= [\ ^ \ $()\%。[] * + - \?])正则表达式将String替换为“%”