C# 如何正则化这种字符串

C# 如何正则化这种字符串,c#,regex,.net-4.7.2,C#,Regex,.net 4.7.2,我想要regex这个字符串,但我真的不知道怎么做。我已经想出了如何得到数字,但没有其他字符串 string text = "1cb07348-34a4-4741-b50f-c41e584370f7 Youtuber https://youtube.com/lol love youtube"; 输出 1cb07348-34a4-4741-b50f-c41e584370f7 现在我希望输出是 1cb07348-34a4-4741-b50f-c41e584370f7 Youtuber https:

我想要regex这个字符串,但我真的不知道怎么做。我已经想出了如何得到数字,但没有其他字符串

string text = "1cb07348-34a4-4741-b50f-c41e584370f7 Youtuber https://youtube.com/lol love youtube";
输出

1cb07348-34a4-4741-b50f-c41e584370f7
现在我希望输出是

1cb07348-34a4-4741-b50f-c41e584370f7
Youtuber
https://youtube.com/lol
love youtube
我完成的是输出的第一行,但我不知道如何对其他字符串进行正则表达式

([\w]+-){5}
更干净,可以替换您已经完成的操作

\w
是指
[a-zA-Z0-9.]

然后,如果字符串的前面和后面总是有一个由空格分隔的单词,则可以执行以下操作:

string regexstring = "((\w*-){4})(\w*) (.+?)[A-Za-z]?(https://[^ ]+?) (.+)";
输出

Match m = Regex.Match(text, regexstring);
if(m.Success)
    Console.WriteLine(m.Groups[1] + "" + m.Groups[2] + "" + m.Groups[3] + "\n" + m.Groups[4] + "\n" + m.Groups[5] + "\n" + m.Groups[6]);

我猜,如果我们的输入看起来是一样的,这个表达式可能有点接近你的想法,但不确定:

^(\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b)\s+(.*?)\s+[A-Z](https?:\/\/\S+)\s+(.*)$
如果您希望探索/简化/修改该表达式,将在的右上面板中对其进行解释。在中,如果您愿意,可以查看它与一些示例输入的匹配情况

参考

您能澄清一下,您到底想要什么吗?让每个单词用空格分隔,用换行符分隔?我不明白这个结果输出与输入相同。这个例子中的匹配不成功。你能测试一下吗out@newcoma哎呀,对不起。试试看。哦,我认为这是一个打字错误,因为它不在你的原始输出中。你想把
V
放在哪里?我真的不知道为什么他们在
Vhttps://
中添加了一个字符,所以我只想要
https://
而不需要这个字符,所以只要删除就行了
Match m = Regex.Match(text, regexstring);
if(m.Success)
    Console.WriteLine(m.Groups[1] + "" + m.Groups[2] + "" + m.Groups[3] + "\n" + m.Groups[4] + "\n" + m.Groups[5] + "\n" + m.Groups[6]);
^(\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b)\s+(.*?)\s+[A-Z](https?:\/\/\S+)\s+(.*)$