gpt4 book ai didi

javascript - 替换评论之间的内容

转载 作者:行者123 更新时间:2023-11-28 13:03:16 26 4
gpt4 key购买 nike

我想替换两条评论之间的内容,例如

/**** Useless CSS ****/
.my-class{
margin: 12px;
}

/* Several Lines after including other comments **/

/**** END Useless CSS ****/

.other {
padding: 12px;
}
/* Hello */

到目前为止我已经:

[\/* Useless CSS \*\/](.|[\r\n])*?END Useless CSS \*\*\*\*\/?

但这行不通。我在 Regex101 中遇到错误:灾难性回溯

最佳答案

您的问题的一部分是正则表达式的第一部分。您正在使用 [\/* Useless CSS\*\/],一个字符类,这意味着该集中的任何字符。换句话说,以下任何字符(删除重复字母后):/* UselCS。这绝对不是你的意图,但它就是这么做的。下面的代码从模式中删除字符类,以便它显式匹配 /**** 无用 CSS ****/

第二个更改是将 (.|[\r\n])*? 转换为 [\s\S]*?。无需每次都使用正则表达式检查两个选项。如果是一组字符,只需将它们添加到同一字符类中即可。 [\s\S] 是表示任何字符(包括换行符)的一种方式。另一种方法(适用于 JavaScript,但不适用于许多其他正则表达式引擎)是使用 [^]

第三个更改是将 \*\*\*\* 更改为 \*{4}。这不仅更短、更容易理解,而且还提高了性能,因为正则表达式引擎不需要逐个标记 \*,然后 \*,然后 \* 等。它被告知要匹配 * 四次,因此它会一次性完成而不是 4 次。这意味着 \*\*\*\* 需要四步,而 \*{4} 只需要一步。

您还可以在末尾附加 \s* 以删除额外的空格。

\/\*{4} Useless CSS \*{4}\/[\s\S]*?\/\*{4} END Useless CSS \*{4}\/

var s = `/**** Useless CSS ****/
.my-class{
margin: 12px;
}

/* Several Lines after including other comments **/

/**** END Useless CSS ****/

.other {
padding: 12px;
}
/* Hello */`
var r = /\/\*{4} Useless CSS \*{4}\/[\s\S]*?\/\*{4} END Useless CSS \*{4}\//gi

console.log(s.replace(r, ''))

关于javascript - 替换评论之间的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48789225/

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