我想添加一個新路徑,其名稱為從帶有 .cjs 擴展名的匯入到包含“primereact”的每個匯入的最后一個路徑。
例如:
import { nanoid } from "nanoid";
import { Button } from "primereact/button";
應該:
import { nanoid } from "nanoid";
import { Button } from "primereact/button/button.cjs";
我想用 js 替換功能連接正則運算式
string.replace(//g, '');
我有一個正則運算式來查找包含importand的行primereact,但無法添加帶有擴展名的必要檔案。
.*(import) .*(primereact) .*
uj5u.com熱心網友回復:
以下正則運算式捕獲包含 primereact 的每個輸入行中的最后一個單詞:
(?<=(^|\n)import. ?primereact[^\/]*\/). ?(?=\";)
您的示例輸入的結果匹配將是:按鈕
使用這個匹配,我們可以像下面的偽代碼一樣添加必要的路徑資訊:
var regex = "(?<=(^|\n)import. ?primereact[^\/]*\/). ?(?=\";)";
foreach (var line in lines)
{
var match = line.match(regex);
if (match)
{
line = line.replace(regex, match.result "/" match.result ".cjs");
}
}
uj5u.com熱心網友回復:
const source = `import { nanoid } from "nanoid";
import { Button } from "primereact/button";
import { Butter } from "primereact/butter";`
const regex = /(\bimport\b.*?\bfrom "primereact\/)([^"] )/g;
let result = source.replace(regex, (m, g1, g2) => {
return g1 g2 '/' g2 '.cjs';
});
console.log(result);
輸出:
import { nanoid } from "nanoid";
import { Button } from "primereact/button/button.cjs";
import { Butter } from "primereact/butter/butter.cjs";
正則運算式的解釋:
(\bimport\b.*?\bfrom "primereact\/)-- 使用單詞邊界捕獲組 1\b以避免誤報([^"] )-- 捕獲組 2 捕獲直到雙引號的所有內容- replace 函式從捕獲組中組成所需的字串,
g1并且g2
uj5u.com熱心網友回復:
例如,您可以使用帶有捕獲組的模式,并在替換中使用這些組。
^(import\s {[^{}]*}\s from\s (["'])primereact\/)(.*?)\2
模式匹配:
^字串的開始(捕獲組 1import\s匹配匯入,1 空白字符{[^{}]*}匹配自{...}\s from\sfrom空格字符之間的匹配(["'])在第 2 組中捕獲"或捕獲'primereact\/匹配primereact/
)關閉組 1(.*?)捕獲組 3,匹配任何字符,盡可能少\2匹配在第 2 組中捕獲的相同結束引號
正則運算式演示
const regex = /^(import\s {[^{}]*}\s from\s (["'])primereact\/)(.*?)\2/gm;
const str = `import { nanoid } from "nanoid";
import { Button } from "primereact/button";`;
console.log(str.replace(regex, `$1$3/$3.cjs$2`));
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/525920.html
