去除特定字符周围不必要的空格的正则表达式

3
我正在尝试从JavaScript文件中删除一些不必要的空格,并使用C#和Regex组合文件,然后将它们发送到客户端。我有一个JavascriptHandler来处理.js文件,这很好用。这是我用来“打包”JavaScript的函数。
private string PackJs(string file)
{
    string text = System.IO.File.ReadAllText(JSFolder + file);

    //replace any combination of unwanted whitespace with a single space
    text = Regex.Replace(text, @"[\r\n\s]+", " ");

    //Can I get this to match +, =, -, etc?
    text = Regex.Replace(text, @"( [=] )", "="); 

    //more regular expressions here, when I get round to it

    return text;
}

我的第二个表达式目前会将“ =”替换为“ =”。我想指定更多的字符和关键字,可以从两侧删除空格。

我该如何在正则表达式中搜索这个字符或关键字,然后在替换中进行反向引用?

谢谢!


你确定要用空格替换\r+\n+吗?我相当确定这可能会改变你的JavaScript的语义(即使它不会破坏语法)。 - LukeH
JS是否“知道格式良好”?a=1\r\nb=4a=1;b=4是可以的,但a=1 b=4不行。 - Alex K.
是的,我在我的JS中每个语句后面都加了分号。我可以随意编辑JS,我只是想让它易于阅读和更好地打包发送给客户端。 - Connell
1
提示:一个非常有用的免费工具是Rad软件的正则表达式设计师:http://www.radsoftware.com.au/?from=RegexDesigner - Daniel Bişar
1
如果您的Web服务器启用了gzip压缩,那么这个过程(以及更多)都将自动完成。无需手动删除多余的空格。 - LukeH
@SACO,你的RegexDesigner链接似乎损坏了。 - Brian Reichle
4个回答

4
[]中放入你的字符。
var input = "c = a + b";
var result = Regex.Replace(input, @"\s([=+])\s", "$1");

结果将是:c=a+b

我知道这一定是什么问题。我对$1的理解是错误的。我以为你必须在正则表达式字符串中以某种方式指定哪个语句将成为$1的返回值。现在可以工作了。基本上,我的()括号放错了位置。 - Connell
1
你应该使用\s*而不是仅仅使用\s - bw_üezi

1

要去除像[=*/+-]这样的字符周围的空格,请使用以下正则表达式:

text = Regex.Replace(text, @"\s*([=*/+-])\s*", "$1");

[]中,-字符必须是第一个或最后一个,以避免其被解释为一组字符的范围。

测试代码示例


1

谢谢提供链接,我会去查看的。 - Connell

0
text = Regex.Replace(text, @(" (=|\+|-) ", "$1");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接