这里pattern是由用户输入的,可能含有任意字符,包括正则表达式中的特殊字符,而我只想让它在Regex.Replace语句中以普通字符的形态进行匹配newName。需要如何处理?
例:
newName=“[www.cntingshu.com]百家讲坛_春秋五霸03_管仲相齐-李山.20110813”;
pattern=“[www.cntingshu.com]百家讲坛_”;
这里[].都是特殊字符,当然还有其它很多特殊字符。我无法知道用户要输入哪些字符,所以不可能手工加“/”来处理
10 个解决方案
#1
“”前面加个@
#2
pattern=textbox.text;
直接这样,貌似没什么问题
直接这样,貌似没什么问题
#3
pattern=“[www.cntingshu.com]百家讲坛_”;
pattern=Regex.Replace(pattern,@"\[|\]|\.",@"\$0");
pattern=Regex.Replace(pattern,@"\[|\]|\.",@"\$0");
#4
有效,能否讲一下"\$0"是什么意思?
#5
同求
#6
pattern=“[www.cntingshu.com]百家讲坛_”;
pattern=Regex.Replace(pattern,@"\[|\]|\.",@"\$0");
有效,能否讲一下"\$0"是什么意思?
这个是命名分组的意思
自己google下“正则表达式30分钟教程”
#7
public static string StringToPattern(string Str)
{
if(Str=="")
return "";
string[] c={"\\", "^", "$", "{", "[", ".", "(", "*", "+", "?", "!", "#", "|",")"};
for(int i=0;i<c.Length;i++)
{
Str=Str.Replace(c[i],"\\"+c[i]);
}
return Str;
}
#8
正则中有个Escape方法,直接可以将正则表达式中的转义字符当成普通字符匹配:
//true
string s = @"[www.\cntingshu.com]百家讲坛_";
string pattern = s;
bool result = Regex.IsMatch(s, Regex.Escape(pattern));
Response.Write(result);
//true
#9
pattern=“[www.cntingshu.com]百家讲坛_”;
pattern=Regex.Replace(pattern,@"\[|\]|\.",@"\$0");
有效,能否讲一下"\$0"是什么意思?
这个是命名分组的意思
自己google下“正则表达式30分钟教程”
3q
#10
#3,#8都是有效的,谢谢。
#1
“”前面加个@
#2
pattern=textbox.text;
直接这样,貌似没什么问题
直接这样,貌似没什么问题
#3
pattern=“[www.cntingshu.com]百家讲坛_”;
pattern=Regex.Replace(pattern,@"\[|\]|\.",@"\$0");
pattern=Regex.Replace(pattern,@"\[|\]|\.",@"\$0");
#4
pattern=“[www.cntingshu.com]百家讲坛_”;
pattern=Regex.Replace(pattern,@"\[|\]|\.",@"\$0");
有效,能否讲一下"\$0"是什么意思?
#5
pattern=“[www.cntingshu.com]百家讲坛_”;
pattern=Regex.Replace(pattern,@"\[|\]|\.",@"\$0");
有效,能否讲一下"\$0"是什么意思?
同求
#6
pattern=“[www.cntingshu.com]百家讲坛_”;
pattern=Regex.Replace(pattern,@"\[|\]|\.",@"\$0");
有效,能否讲一下"\$0"是什么意思?
这个是命名分组的意思
自己google下“正则表达式30分钟教程”
#7
public static string StringToPattern(string Str)
{
if(Str=="")
return "";
string[] c={"\\", "^", "$", "{", "[", ".", "(", "*", "+", "?", "!", "#", "|",")"};
for(int i=0;i<c.Length;i++)
{
Str=Str.Replace(c[i],"\\"+c[i]);
}
return Str;
}
#8
正则中有个Escape方法,直接可以将正则表达式中的转义字符当成普通字符匹配:
//true
string s = @"[www.\cntingshu.com]百家讲坛_";
string pattern = s;
bool result = Regex.IsMatch(s, Regex.Escape(pattern));
Response.Write(result);
//true
#9
pattern=“[www.cntingshu.com]百家讲坛_”;
pattern=Regex.Replace(pattern,@"\[|\]|\.",@"\$0");
有效,能否讲一下"\$0"是什么意思?
这个是命名分组的意思
自己google下“正则表达式30分钟教程”
3q
#10
#3,#8都是有效的,谢谢。