How do I replace an actual asterisk character (*) in a Regex expression?
Solution 1
Since *
is a regex metacharacter, when you need it as a literal asterisk outside of a character class definition, it needs to be escaped with \
to \*
.
In C#, you can write this as "\\*"
or @"\*"
.
C# should also have a general purpose "quoting" method so that you can quote an arbitrary string and match it as a literal.
See also
-
Regular expressions and escaping special characters
- Full list of what needs to be escaped, where/when
Solution 2
You can escape it:
\*
Solution 3
You don't need a regular expression in this simple scenario. You can use String.Replace:
content = content.Replace("*", "(*)");
Solution 4
Use Regex.Escape()
It will take all of the string and make it into something you can use as part of a regex.
Solution 5
Use \\*
instead of * in regex.replace call
fraXis
Updated on July 09, 2022Comments
-
fraXis almost 2 years
I have a statement:
I have a string such as
content = "* test *"
I want to search and replace it with so when I am done the string contains this:
content = "(*) test (*)"
My code is:
content = Regex.Replace(content, "*", "(*)");
But this causes an error in C# because it thinks that the * is part of the Regular Expressions Syntax.
How can I modify this code so it changes all asterisks in my string to (*) instead without causing a runtime error?
-
Thomas almost 14 yearsAlso, consider using a tool if you are composing regular expressions. Expresso has helped me a lot: ultrapico.com/Expresso.htm