除非完全匹配为@example/
,否则我需要替换文件中所有@example/is
的出现。
当前我有以下代码:
let updated = s.replace(/@example\//g, replacement);
但是,这将更新所有事件,包括带有@example/is
的事件。如何排除文件中出现的@example/is
?
我只是粘贴我用来执行更新的脚本(其中包含了很好的答案),以防其他人需要执行以下操作:
const fs = require("fs");
const globby = require("globby");
globby("./test/**/*.ts")
.then(paths => {
paths.forEach(update);
})
.catch(e => console.log(e));
function update(path) {
let replacement = "@ex/";
let js = fs.readFileSync(path, "utf8");
js = js.replace(/@example\/(?!is)/g, replacement)
fs.writeFileSync(path, js);
}
答案 0 :(得分:6)
您可以使用negative lookahead assertion:
let updated = s.replace(/@example\/(?!is)/g, replacement)
(?!is)
是一个否定的超前断言,当is
之后@example/