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

如何用Regex Split正则表达式实现带句号句子的换行拆分?

解决方案

你的问题出在原正则表达式的匹配逻辑完全不符合输入场景——输入里的句子是句号后接空格连续排列,而原正则(?<=[.])\n\r+是匹配句号后的换行符,根本找不到匹配项,自然无法实现拆分换行。

正确实现方式(推荐用替换而非拆分)

用Regex.Replace直接把句号后的空白字符替换成换行符,一步到位:

string input = TextBox1.Text;
// 用Environment.NewLine适配不同系统的换行规则,也可以直接写"\r\n"固定Windows换行
string output = Regex.Replace(input, @"(?<=\.)\s+", Environment.NewLine);

正则说明:

  • (?<=\.):正向回顾断言,确保匹配位置的前一个字符是句号
  • \s+:匹配一个或多个空白字符(包括空格、制表符等)
  • 替换为Environment.NewLine后,每个句号后的空白会被替换成换行,正好让每个句子单独占一行。

拆分拼接的替代方案

如果一定要用Regex.Split,需要先按「句号+空白」拆分,再重新拼接并补全句号:

string input = TextBox1.Text;
// 按句号+一个或多个空白拆分
string[] sentenceParts = Regex.Split(input, @"\.\s+");
// 拼接时补回句号和换行,最后再补全末尾的句号
string output = string.Join($"{Environment.NewLine}. ", sentenceParts).TrimEnd() + ".";

效果验证

输入:

First sentence. Second sentence. Third sentence.

处理后输出:

First sentence.
Second sentence.
Third sentence.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:55:18