用于删除代码

时间:2016-05-11 03:11:59

标签: regex sublimetext matching

如果我有这样的代码:

var     foo       = 5;
if  (  bar > 2) {  bar    += foo;}

应该变成这样:

var foo=5;
if(bar>2){bar+=foo;}

删除中间没有字母的空格,避免出现关键字/变量错误。 如果你有两个单词,它之间的空格就是一个空格。

\s+(?=[^A-z])是我能找到的最接近的,但并不匹配所有空格。

4 个答案:

答案 0 :(得分:1)

查看Rails squish方法:

http://apidock.com/rails/String/squish

答案 1 :(得分:1)

这似乎有效:

let re = /(?!\b\s*\w)\s*/gm;

修改:在您的代码中,只需将letconst替换为var for ES5。

Regex101



let str = `var     foo       = 5;
if  (  bar > 2) {  bar    += foo;}`;

const re = /(?!\b\s*\w)\s*/gm;

str = str.replace(re, '');

document.body.textContent = str;




答案 2 :(得分:0)

replace(/?=[\w][^\n\t]+/," ")将用单个空格替换所有多个空格,以便owuld在那里找到你的一半。除此之外,如果你真的想要特别的东西,你可以删除所有的空白区域,并在所有需要空格的关键词之后添加空格......我不建议这样做,因为它会破坏包含关键字的变量名称的代码。

答案 3 :(得分:0)

也许是这样的:

REST=cat # Whatever the rest of your pipeline is...

( cat <<EOF
var     foo       = 5;
if  (  bar > 2) {  bar    += foo;}
EOF
)\
| tr -s '\t ' " " \
| sed \
    -e 's/\([[:punct:]]\) /\1/g' \
    -e 's/ \([[:punct:]]\)/\1/g' \
| $REST

输出是:

$ sh test.sh
var foo=5;
if(bar>2){bar+=foo;}