我需要解析文本并将其拆分得非常精确。我选择使用正则表达式来完成这项工作但我遇到了在C#中对它进行高级操作的问题。我很感激能找到完美解决方案的任何帮助,即使我需要采取别的东西而不是正则表达式。
以下是我的标准:
以下是更好理解的示例文字:
--- Lorem ipsum dolor sit amet,consectetur adipiscing elit。 Mauris euismod:tristiquetellus non egestas; Pellentesque fermentum lectus orci!一个小说nunc placerat sed?在lacus \ rcursus posuere \ r \ r \ n Aliquam venenatis \ r \ n的Quisque eget felis nisi vitae dictum pharetra。 --- Vivamus semper dolor quam,pellent.esque hendrerit sapien blandit ut。 \ r \ n \ 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()方法的良好结合。如有必要,请随时向我询问更多详情。
答案 0 :(得分:1)
由于你还不是很清楚\r
应该是回车还是文字\r
,我会把两者放在一起:
文字:
(.+?)((?:\.{3} |[:;!?](?!/)|\. )(?:\\r)*\s*|(?:\\r)+\s*|$)
回车:
(.+?)((?:\.{3} |[:;!?](?!/)|\. )(?:\r)*\s*|(?:\r)+\s*|$)
答案 1 :(得分:0)
我看到你有正则表达式,只需使用Regex实例拆分字符串,如下所示: ... string [] splitStringValues = r.split(lorem); 或
char u =':'; //刚刚初始化
switch (u)
{
case ':':
//do split work here
break;
default:
//do split work here
break;
}
答案 2 :(得分:0)
查看(((http(s*))\://){1}\S+)|((\S*\w+\s*\p{P}*)+[:;!?]+\s*)|(\...)