You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取正则规则:line前的内容以提取堆栈跟踪中的文件名与行号

实现方案

1. 匹配用正则表达式

根据.NET堆栈的固定格式,可根据需求选择以下两种正则:

  • 提取完整路径+行号(例:E:\SharedProjects\ExampleProjectAPI\Services\ReportRepository.cs:line 445):
    \S+\.cs:line \d+
  • 提取仅文件名+行号(例:ReportRepository.cs:line 445,符合你的需求):
    [^\\\/]+\.cs:line \d+

规则说明:

  • \S+:匹配所有非空白字符,完整覆盖路径中的合法字符
  • [^\\\/]+:排除路径分隔符(Windows的\、Linux的/),自动截取路径最后一段的文件名
  • \.cs:匹配C#代码文件后缀,避免误匹配其他位置的:line字符串
  • :line :匹配堆栈固定的行号标识
  • \d+:匹配1位及以上的行号数字

2. 前端高亮实现示例

因为你需要在HTML页面展示,以下是JavaScript处理逻辑:

// 原始堆栈文本
const rawStack = `Microsoft.Data.SqlClient.SqlException (0x80131904): ... 此处省略堆栈内容 ...:line 445`;
// 匹配正则,加g全局标记匹配堆栈中所有行号位置
const reg = /[^\\\/]+\.cs:line \d+/g;
// 给匹配到的内容套上自定义类的span标签
const renderHtml = rawStack.replace(reg, matchStr => {
  return `<span class="stack-highlight">${matchStr}</span>`;
});
// 插入到页面容器中
document.getElementById('stack-container').innerHTML = renderHtml;

配套CSS样式可自定义高亮效果:

.stack-highlight {
  color: #d63384;
  font-weight: 600;
  background: #f8d7da;
  padding: 1px 3px;
  border-radius: 3px;
}

3. 兼容说明

如果是在后端预处理堆栈内容,C#、Java、Python等主流编程语言的正则引擎都兼容上述规则,直接使用即可。


内容的提问来源于stack exchange,提问作者GettingStarted

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:24:00