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
$ 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.
Escape converts a string so that the regular expression engine will interpret any metacharacters that it may contain as character literals.
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?]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With