我继承了电子邮件的数据库表,其中已保存的正文文本已被处理以删除变音符号,但此过程也取出了Environment.Newline字符。我可以写一个正则表达式来识别这种模式([。!?。!?] \ {0} \ w)因为句子标记的典型结尾(例如:。!?)和开头之间没有空格。下一句,但我看不出如何在两个字符之间插入换行符。
E:g:“这是第一段的结尾。这是第二段的开头。
我想插入一个新行(在本例中是“h.A”之间)和这种类型的模式出现的地方。任何帮助将不胜感激(我使用C#.NET 4.5) - 我花了几个小时与RegExBuddy,但无法看到如何做到这一点。请原谅我的无知。
答案 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.