正则表达式 - 查找被空格和逗号包围的每个整数出现

3

我有以下字符串:

"121 fd412 4151 3213, 421, 423 41241 fdsfsd"

我需要获取3213和421 - 因为它们前面都有空格,并且后面有逗号。

结果将被设置在字符串数组中...我该怎么做?

"\\d+" 可以捕获每个整数。

"\s\\d+(,)" 会引发一些内存错误。

编辑。

数字左侧 (<-) 有空格,右侧有逗号 (->)

编辑2。

string mainString = "Tests run: 5816, 8346, 28364 iansufbiausbfbabsbo3 4";
MatchCollection c = Regex.Matches(a, @"\d+(?=\,)");
var myList = new List<String>();
foreach(Match match in c)
{
    myList.Add(match.Value);
}            
Console.Write(myList[1]);
Console.ReadKey();

什么类型的内存错误?这个字符串似乎并不是很大。 - shree.pat18
1
421后面没有空格,而是逗号。 - Conffusion
3213后面没有逗号 - hex494D49
6个回答

4

如果您想匹配数字并将它们作为单独的结果,那么您的正则表达式语法是不正确的。您可以这样做:

@"\s(\d+),\s(\d+)\s"

演示

编辑

@"\s(\d+),"

Live Demo


谢谢!不过字符串可能会随着时间变得更大,所以我想要检索与该模式匹配的所有数字。 - khernik
12 52 14, 25 14 51, 42, 95, 21 - 应该得到 [14, 51, 42, 95] - khernik
@user3486978 你想检查一下你原始问题中的例子吗?它与那个例子不符。 - Rawling
好的,现在它可以工作了。但是我只想获取数字,不要空格和逗号...有没有办法做到这一点? - khernik
1
ه°†myList.Add(match.Value);و›´و”¹ن¸؛myList.Add(match.Groups[1].Value); - hwnd

0
只需这些数字,就是你所需要的全部。
\d+(?=\,)

regex

Console


我刚刚编辑了帖子,请看一下代码。它不起作用。 - khernik
只需看一下我添加的图片。它正是您的情况。@user3486978 - gandarez

0

另一种解决方案

\s(\d+),  // or maybe you'll need a double slash \\

输出:

3213
421

演示


0

\s\\d+(,):

  • \s没有正确转义,应该是\\s,和\\d一样
  • \\d匹配单个数字,你需要\\d+ - 一个或多个连续的数字
  • (,)捕获逗号,你真的需要这个吗?看起来你需要捕获一个数字,所以是\\s(\\d+),
  • 你说"因为它们两个都有空格在后面,并且逗号在前面",所以可能是,\\s(\\d+)

0
这个表达式怎么样?
 " \d+,"  // expression without the quotes

它应该能找到你需要的东西。

关于如何使用正则表达式,你可以在MSDN上查看。

希望能对你有所帮助。


0

我觉得你的意思是你想要类似于,<空格><数字>而不是,<数字><空格>

如果是这样,可以试试this

, (\d+)   //you might need to add another backslash as the others have noted

嗯,根据您的新编辑来看

\s(\d+),

在这里测试一下here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接