正则替换输出的条件空格优化:现场曲目活动与年份提取
解决现场曲目活动名称+年份提取的正则问题
针对你遇到的两个问题——无年份时出现多余空格、年份无前导空格无法正确捕获——可以通过**.NET正则替换的条件语法**实现单次替换解决,不需要额外处理步骤。
修改后的代码
myResult = Regex.Replace(myTitle, @".*(event1|event2|event3)\D*(\d+)?.*", @"${1}${2:+ $2}", RegexOptions.IgnoreCase);
关键改进点
- 消除多余空格:使用
.NET正则替换的条件表达式${2:+ $2},逻辑是:如果捕获组$2(年份)有值,就插入年份`(空格加年份);如果$2为空,就什么都不插,彻底避免无年份时的多余空格。 - 兼容无前导空格的年份:原正则中的
\D*是匹配零或多个非数字字符,所以即使年份直接跟在活动名后面(比如event22023),\D*会匹配0个字符,年份依然能被(\d+)捕获,完美兼容这种场景。
测试示例
- 输入:
"Track - event1 Live 2023"→ 输出:event1 2023 - 输入:
"event32022 Live Show"→ 输出:event3 2022 - 输入:
"Live Performance - event2"→ 输出:event2
内容的提问来源于stack exchange,提问作者esims
相关产品推荐
相关产品推荐

