替换预处理文本中缺少的“换行符”

时间:2015-09-04 19:40:38

标签: c# regex

我继承了电子邮件的数据库表,其中已保存的正文文本已被处理以删除变音符号,但此过程也取出了Environment.Newline字符。我可以写一个正则表达式来识别这种模式([。!?。!?] \ {0} \ w)因为句子标记的典型结尾(例如:。!?)和开头之间没有空格。下一句,但我看不出如何在两个字符之间插入换行符。

E:g:“这是第一段的结尾。这是第二段的开头。

我想插入一个新行(在本例中是“h.A”之间)和这种类型的模式出现的地方。任何帮助将不胜感激(我使用C#.NET 4.5) - 我花了几个小时与RegExBuddy,但无法看到如何做到这一点。请原谅我的无知。

1 个答案:

答案 0 :(得分:0)

首先,我考虑推动获取原始信息,而不是采取这些措施,因为结果不会是完美的。

您可以使用正则表达式[\.\!\?]\b,它被定义为标点符号,后跟单词的开头。

示例代码:

static void Main(string[] args)
{
    Console.WriteLine(RestoreNewlines("This is the end of the first paragraph.And this is the start of the second. This is the start of the third."));
    Console.WriteLine(RestoreNewlines("Example of a case.txt where it fails."));
}

private static readonly Regex PunctuationWithoutFollowingWhitespaceRegex = new Regex(@"[\.\!\?]\b");

static string RestoreNewlines(string input)
{
    return PunctuationWithoutFollowingWhitespaceRegex.Replace(input, match => match.Value + Environment.NewLine);
}

输出:

This is the end of the first paragraph.
And this is the start of the second. This is the start of the third.
Example of a case.
txt where it fails.