C# Regular Expression: Remove leading and trailing double quotes (")

+10 votes
asked Jul 19, 2010 by pete-alvin

If I have a string like below... what is the regular expression to remove the (optional) leading and trailing double quotes? For extra credit, can it also remove any optional white space outside of the quotes:

string input = "\"quoted string\"" -> quoted string
string inputWithWhiteSpace = " \"quoted string\" " => quoted string

(for C# using Regex.Replace)

4 Answers

+3 votes
answered Jul 19, 2010 by amarghosh

Replace ^\s*"?|"?\s*$ with an empty string.

In C#, the regex would be:

string input = " \"quoted string\" "l
string pattern = @"^\s*""?|""?\s*$";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, "");
Console.WriteLine(result);
+32 votes
answered Jul 19, 2010 by lukeh

It's overkill to use Regex.Replace for this. Use Trim instead.

string output = input.Trim(' ', '\t', '\n', '\v', '\f', '\r', '"');

And if you only want to remove whitespace that's outside the quotes, retaining any that's inside:

string output = input.Trim().Trim('"');
+1 vote
answered Jun 16, 2012 by kamarey

I would use String.Trim method instead, but if you want regex, use this one:

@"^(\s|")+|(\s|")+$"
+1 vote
answered Nov 29, 2018 by brandon-hawbaker

I created a slightly modified version of another pattern that works pretty well for me. I hope this helps for separating normal command-line parameters and double-quoted sets of words that act as a single parameter.

String pattern = "(\"[^\"]*\"|[^\"\\s]+)(\\s+|$)";
Welcome to Q&A, where you can ask questions and receive answers from other members of the community.
...