【发布时间】:2020-11-22 19:17:13
【问题描述】:
我有以下几句话:
Say.2 Sing"3 Final5 Note:10 Music99 Sing1
我需要你用(string + number) 看起来像这样:
我试过这样:
[^\s\d]\d+
但总是在前面出现一个字符串而不是数字:
我通过 C# 中的代码将最后这些数字替换为 \n。我只需要一个有效的正则表达式。
private void method()
{
string text = "Say.2 Sing"3 Final5 Note:10 Music99 Sing1";
string ntext = Regex.Replace(text, @"[^\s\d]\d+", "\n");
Console.WriteLine(ntext);
}
但在输出中是这样的:
Say
Sing
Fina
Note
Musi
Sin
我需要你看起来像这样:
Say.
Sing"
Final
Note:
Music
Sing
【问题讨论】:
-
为什么不只是
\d+? -
这是因为我有一个文本,并且在该文本中有一些带有模式的单词(字符串 + 数字),我需要删除末尾的数字
-
但
\d+将完美匹配您所有的黄色标记。你试过了吗? -
我需要在数字前有一个字符串,所以选择那个数字
-
然后使用正向后视结构:
(?<=[^\s\d])\d+。当前面有除空格或数字之外的任何内容时,这将匹配一系列数字。