我需要解析文本并非常精确地拆分它。我选择使用正则表达式来完成这项工作,但我遇到了在 C# 中对其进行高级操作的问题。我将不胜感激找到完美解决方案的任何帮助,即使我需要采用正则表达式以外的其他方法。
这是我的标准:
- 当有 : ; 时需要拆分文本 !? \r
- 如果有点“。”我们也可以拆分它。后跟一个空格
- 如果分隔符后面有空格,则需要添加它们。
- 如果有 URL,我们不会拆分“:”
- 如果有悬浮点“...”,则需要在后面添加
这是一个示例文本,可以更好地理解:
---Lorem ipsum dolor sit amet,consectetur adipiscing elit。Mauris euismod : tristiquetellus non egestas; Pellentesque 发酵菌 lectus orci !格言 nunc placerat sed ?Quisque eget felis in lacus \rcursus posuere\r\r Aliquam venenatis\r nisi vitae dictum pharetra。--- Vivamus semper dolor quam, pellent.esque hendrerit sapien blandit ut。\r\r\r\rCras sem massa,tempor sit amet nunc id,condimentum facilisis augue... \rhttps://www.google.com dictum nunc placerat sed
最后得到想要的结果:
---Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Mauris euismod :
tristiquetellus non egestas;
Pellentesque fermentum lectus orci !
A dictum nunc placerat sed ?
Quisque eget felis in lacus \r
cursus posuere\r\r
Aliquam venenatis\r
nisi vitae dictum pharetra. \r
---Vivamus semper dolor quam, pellent.esque hendrerit sapien blandit ut. \r\r\r\r
Cras sem massa, tempor sit amet nunc id, condimentum facilisis augue... \r
https://www.google.com dictum nunc placerat sed
我离结果真的很远,这就是我在这里发帖的原因。我此时尝试成功 1) 步骤。这是我的实际代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace ConsoleApplication58
{
class Program
{
static void Main(string[] args)
{
Regex r = new Regex(@"(\S*\w+\s*\p{P}*)+[:;!?]+\s*");
string lorem = "---Lorem ipsum dolor sit amet, consectetur adipiscing elit. " +
"Mauris euismod : " +
"tristiquetellus non egestas; " +
"Pellentesque fermentum lectus orci ! " +
"A dictum nunc placerat sed ? " +
"Quisque eget felis in lacus \r" +
"cursus posuere\r\r " +
"Aliquam venenatis\r " +
"nisi vitae dictum pharetra. " +
"---Vivamus semper dolor quam, pellent.esque hendrerit sapien blandit ut. \r\r\r\r" +
"Cras sem massa, tempor sit amet nunc id, condimentum facilisis augue... \r" +
"https://www.google.com dictum nunc placerat sed";
MatchCollection m2 = r.Matches(lorem);
foreach (Match match in m2)
{
string txt = match.Value;
Console.WriteLine("*{0}*", txt);
}
}
}
}
非常感谢您阅读本文并尝试帮助我。这有点紧急,我无法从正则表达式中找出与 Matches() 方法的良好组合。如有必要,请随时向我询问更多详细信息。