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

.NET正则表达式按最后下划线分割失效(无空格文本异常)

解决基于最后一个下划线分割文本的正则异常问题

问题出在哪

你用的正则^(.*?)_(\w+?)*$有俩关键问题:

  • .*?是非贪婪匹配,会尽量少匹配字符,碰到第一个下划线就停了,根本没定位到最后一个下划线
  • (\w+?)*写法既冗余又不准,\w包含字母、数字和下划线,碰到无空格的行(比如DA04_Floorplan),会错误把中间的下划线当成分割点,导致匹配乱套

怎么改

用贪婪匹配直接定位最后一个下划线,同时精准抓末尾的单个字母,推荐用这个正则:

^(.*)_(.)$

简单解释

  • ^和$分别卡每行的开头和结尾
  • .*是贪婪匹配,会尽可能多的匹配字符,直到碰到最后一个下划线才停下,刚好匹配到分割点之前的所有内容
  • _就是要找的最后那个下划线
  • (.)抓下划线后面的单个字符(对应你示例里的C/E这些结尾字母)

要是想更严谨,限定结尾必须是大写字母,就改成:

^(.*)_([A-Z])$

测试效果

用这个正则跑你的文本,所有行都能正确分割:

2022-366_DA00_Cover Sheet==C
2022-366_DA01_Locality Plan==E
2022-366_DA02_Site Plan==H
2022-366_DA03_Delivery Plan==E
2022-366_DA04_Floorplan==D
2022-366_DA05_Roof Plan==D
2022-366_DA06_Front  Side Building Elevations==F
2022-366_DA07_Drivethru  Rear Building Elevations==D
2022-366_DA08_External Finishes Schedule==A

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 09:33:18