如果我有一个如下所示的字符串...删除(可选)前导和尾随双引号的正则表达式是什么?对于额外的功劳,它还可以删除引号之外的任何可选空格:
string input = "\"quoted string\"" -> quoted string
string inputWithWhiteSpace = " \"quoted string\" " => quoted string
(对于使用Regex.Replace的C#)
答案 0 :(得分:32)
使用Regex.Replace
来做这件事太过分了。请改用Trim
。
string output = input.Trim(' ', '\t', '\n', '\v', '\f', '\r', '"');
如果您只想删除在之外的空格,则保留其中的任何内容:
string output = input.Trim().Trim('"');
答案 1 :(得分:9)
除了使用正则表达式之外,您还可以使用String.Trim()
- 更容易阅读,理解和维护。
var result = input.Trim('"', ' ', '\t');
答案 2 :(得分:3)
用空字符串替换^\s*"?|"?\s*$
。
在C#中,正则表达式将是:
string input = " \"quoted string\" "l
string pattern = @"^\s*""?|""?\s*$";
Regex rgx = new Regex(pattern);
string result = rgx.Replace(input, "");
Console.WriteLine(result);
答案 3 :(得分:1)
我会使用String.Trim方法,但是如果你想要正则表达式,请使用这个:
@"^(\s|")+|(\s|")+$"
答案 4 :(得分:1)
我创建了另一种模式的略微修改版本,对我来说效果很好。我希望这有助于分离正常的命令行参数和作为单个参数的双引号词集。
String pattern = "(\"[^\"]*\"|[^\"\\s]+)(\\s+|$)";