Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Escape Special Character in Regex

Tags:

Is there a way to escape the special characters in regex, such as []()* and others, from a string?

Basically, I'm asking the user to input a string, and I want to be able to search in the database using regex. Some of the issues I ran into are too many)'s or [x-y] range in reverse order, etc.

So what I want to do is write a function to do replace on the user input. For example, replacing ( with \(, replacing [ with \[

Is there a built-in function for regex to do so? And if I have to write a function from scratch, is there a way to account all characters easily instead of writing the replace statement one by one?

I'm writing my program in C# using Visual Studio 2010

like image 415
sora0419 Avatar asked Dec 10 '13 21:12

sora0419


People also ask

What does '$' mean in regex?

$ means "Match the end of the string" (the position after the last character in the string). Both are called anchors and ensure that the entire string is matched instead of just a substring.

What is escape regex?

Escape converts a string so that the regular expression engine will interpret any metacharacters that it may contain as character literals.


1 Answers

You can use .NET's built in Regex.Escape for this. Copied from Microsoft's example:

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?] 
like image 107
brandonscript Avatar answered Oct 18 '22 23:10

brandonscript