Apps Script正则问题:提取Slack消息中的目标系统名称
修正正则以提取Slack消息中的系统名称
问题分析
你的正则无法匹配的核心问题有两个:
- 目标行结构是
Requested system? MMM,问号后是空格而非换行,但你用\n做分隔符,导致匹配失败。 - 原正则结合
s模式用$匹配整个消息的结尾,但目标行并非消息最后一行,因此无法捕获内容。
修正后的正则与代码
替换原正则为以下表达式,即可正确提取单个或逗号分隔的系统名称:
const regexRequestedSystem = /Requested system?\s+(.*)$/m;
修改后的完整函数:
function extractData(message, channelId) { const regexRequestedSystem = /Requested system?\s+(.*)$/m; const requestedSystemMatch = regexRequestedSystem.exec(message); return { requestedSystem: requestedSystemMatch ? requestedSystemMatch[1].trim() : null, messageLink: `https://slack.com/app_redirect?channel=${channelId}&message_ts=${message.ts}`, }; }
正则说明
\s+:匹配问号后的一个或多个空白字符,兼容可能的多空格场景(.*)$:捕获该行从空格后到行尾的所有内容,支持逗号分隔的多个系统名称m:多行模式,让$匹配单行结尾而非整个字符串结尾,确保目标行不是消息最后一行时也能匹配
内容的提问来源于stack exchange,提问作者user1547226
相关产品推荐
相关产品推荐

