有没有办法[]()*从字符串中转义正则表达式中的特殊字符(例如和其他字符)?
[]()*
基本上,我要用户输入一个字符串,并且我希望能够使用正则表达式在数据库中进行搜索。我遇到的一些问题是too many)'s或[x-y] range in reverse order,等等。
too many)'s
[x-y] range in reverse order
所以我想做的就是编写一个函数来替换用户输入。例如,替换(为\(,替换[为\[
(
\(
[
\[
正则表达式有内置功能吗?而且,如果我必须从头开始编写函数,是否有一种方法可以轻松解决所有字符,而不是一个一个地编写替换语句?
我正在使用Visual Studio 2010用C#编写程序
您可以为此使用内置于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?]