From 354bdd03f49932b8df487916e7a5823b83f61662 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=AB=E9=81=97=E5=BF=98=E7=9A=84=E8=AE=B0=E5=BF=86?= <32097237+YIWANG-sketch@users.noreply.github.com> Date: Tue, 19 Nov 2024 22:26:23 +0800 Subject: [PATCH] Update formatMessages.mjs --- formatMessages.mjs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/formatMessages.mjs b/formatMessages.mjs index 9d9439f..6ed78e9 100644 --- a/formatMessages.mjs +++ b/formatMessages.mjs @@ -163,15 +163,20 @@ function convertRoles(messages, roleFeatures) { }); } -// 替换 content 中的角色定义 +// 转义正则特殊字符 +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); +} + +// 替换 content 角色定义 function replaceRolesInContent(messages, roleFeatures) { const { prefix } = roleFeatures; // 构建角色名称列表 const roles = ['System', 'Human', 'Assistant', 'system', 'human', 'user', 'assistant']; const rolePatterns = roles.map(role => { - const escapedRole = role.replace(/[\^$\\.*+?()[\]{}|]/g, '\\$&'); - const escapedPrefix = prefix.replace(/[\^$\\.*+?()[\]{}|]/g, '\\$&'); + const escapedRole = escapeRegExp(role); + const escapedPrefix = escapeRegExp(prefix); return `(${escapedPrefix}?${escapedRole}:)`; }); const roleRegex = new RegExp(rolePatterns.join('|'), 'g');