我到处寻找但无法找到答案。我需要一个正则表达式,它删除字符串中的所有空格,但只保留""
内的空格。
示例:$F:2 $PX:30 $PY:980 $T: " "
或$F:A $PX:30B $PY:9K80 $T: " "
所以最后应该看起来像$F:2$PX:30$PY:980$T:" "
解释如何阅读你回答的正则表达式是很有价值的。
答案 0 :(得分:1)
匹配空格不在前面,后面跟引号:
(?<!") (?!")
匹配所有空格:
(?<!")\s+(?!")
注意:这可能不适用于多个空间,正如Dmitry所指出的那样。
答案 1 :(得分:1)
这将匹配触及"
但未被它们包围的空白。
" +(?!\")|(?<!\") +"
对于所有空白区域:
"\s+(?!\")|(?<!\")\s+"
上对其进行测试
答案 2 :(得分:1)
The Greatest Regex Trick Ever非常有用:
var str = "$F:2 $PX:30 $PY:980 \" \"$T:\" \"";
str = Regex.Replace(str, "\"\\s+\"|\\s+", m => { return m.Value.StartsWith("\"") ? m.Value : ""; });
Console.WriteLine(str);