首页 > 解决方案 > 如何使用正则表达式拆分这两个字符串?

问题描述

以下是2个字符串:

"    at callback (/Users/lem/Projects/RingAPI/packages/server/node_modules/loopback-connector-rest/lib/rest-builder.js:541:21)"

"    at /Users/lem/Projects/RingAPI/packages/server/node_modules/@loopback/repository/node_modules/loopback-datasource-juggler/lib/observer.js:269:22"

如何使用 JS 和 Regex 将它们拆分为这些?

['callback', '/Users/lem/Projects/RingAPI/packages/server/node_modules/loopback-connector-rest/lib/rest-builder.js', '541', '21']

['', '/Users/lem/Projects/RingAPI/packages/server/node_modules/@loopback/repository/node_modules/loopback-datasource-juggler/lib/observer.js', '269', '22']

标签: javascriptregex

解决方案


我为你写了简单的解析函数:

function parse(string) {
  const functionName = string.match(/at .* /);
    return [
      ...(functionName && [functionName[0].slice(2).trim()] || ['']),
      ...string.match(/\/.*/)[0].split(':')
    ];
}

首先,我尝试提取函数名称。如果存在,我删除“at”字并使用修剪功能删除不必要的空格。然后我寻找以斜杠'/'开头的子字符串并匹配它之后的每个字符。最后一步是拆分返回的字符串。

我相信它符合您的要求。我还在 stackblitz 中准备了演示:https ://stackblitz.com/edit/js-ol22yf


推荐阅读