一尘不染

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

c#

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

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

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

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

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


阅读 291

收藏
2020-05-19

共1个答案

一尘不染

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

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-05-19