为了账号安全,请及时绑定邮箱和手机立即绑定

正则表达式中的转义特殊字符

/ 猿问

正则表达式中的转义特殊字符

拉莫斯之舞 2020-02-02 15:28:50

有没有办法[]()*从字符串中转义正则表达式中的特殊字符(例如和其他字符)?

基本上,我要用户输入一个字符串,并且我希望能够使用正则表达式在数据库中进行搜索。我遇到的一些问题是too many)'s[x-y] range in reverse order,等等。

所以我想做的就是编写一个函数来替换用户输入。例如,替换(\(,替换[\[

正则表达式有内置功能吗?而且,如果我必须从头开始编写函数,是否有一种方法可以轻松解决所有字符,而不是一个一个地编写替换语句?

我正在使用Visual Studio 2010用C#编写程序


查看完整描述

3 回答

?
MYYA

您可以使用.NET内置的Regex.Escape。从微软的例子复制:


string pattern = Regex.Escape("[") + "(.*?)]"; 

string input = "The animal [what kind?] was visible [by whom?] from the window.";


MatchCollection matches = Regex.Matches(input, pattern);

int commentNumber = 0;

Console.WriteLine("{0} produces the following matches:", pattern);

foreach (Match match in matches)

   Console.WriteLine("   {0}: {1}", ++commentNumber, match.Value);  


// This example displays the following output: 

//       \[(.*?)] produces the following matches: 

//          1: [what kind?] 

//          2: [by whom?]


查看完整回答
反对 回复 2020-02-02
?
慕盖茨4494581

string matches = "[]()*";

StringBuilder sMatches = new StringBuilder();

StringBuilder regexPattern = new StringBuilder();

for(int i=0; i<matches.Length; i++)

    sMatches.Append(Regex.Escape(matches[i].ToString()));

regexPattern.AppendFormat("[{0}]+", sMatches.ToString());


Regex regex = new Regex(regexPattern.ToString());

foreach(var m in regex.Matches("ADBSDFS[]()*asdfad"))

    Console.WriteLine("Found: " + m.Value);


查看完整回答
反对 回复 2020-02-02
?
慕码人2483693

您可以使用 Regex.Escape作为用户输入


查看完整回答
反对 回复 2020-02-02

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信