gpt4 book ai didi

正则表达式删除 block 评论也删除 * 选择器

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:06 24 4
gpt4 key购买 nike

我正在尝试使用 bash 从 .css 文件中删除所有 block 注释。我有以下用于 sed 命令的正则表达式:

sed -r '/\/(\*)*(\s)?(\w)*|(\*)(\s)?(\w)*/d'

这可以很好地去除 block 注释,例如:

/**
* This is a comment
*/

/* this is another comment */

但它也删除了 * Selector 的实例

* { 
font-size: 10px;
...etc
}

我怎样才能改变当前的正则表达式来考虑这种特殊情况?或者我需要重写我的正则表达式吗?

编辑:澄清一下,我会遇到的评论类型:

/**
* This is a comment
*/

/* This is another comment */

/* This is also
valid
*/

/** "*/" as is { this } */

最佳答案

下面的 sed 命令应该适合你:

sed '/\/\*\**/{:a;/\*\//d;N;ba}' file.css

该命令搜索模式 /**/* 如果找到,则执行大括号 {cmd1 之间的命令 block ;cmd2;...}。在该 block 内,我首先定义了一个标签 :a。在下一个命令中,我检查模式缓冲区是否包含结束符 */。如果找到,我会删除模式缓冲区并开始下一个循环。否则,我通过 N 将下一行输入附加到模式缓冲区,并通过 ba 转到标签 a

文件.css:

/**
* This is a comment
*/
a {
font-size: 10px;
}

/* This is another comment */
li {
font-size: 12px;
}

/* This is also
valid
*/
* {
color:white;
}

/** "*/" as is { this } */
table {
color:blue;
}

输出:

a {
font-size: 10px;
}

li {
font-size: 12px;
}

* {
color:white;
}

table {
color:blue;
}

关于正则表达式删除 block 评论也删除 * 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30211678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com