C# 从字符串中获取正好包含x位的数字

C# 从字符串中获取正好包含x位的数字,c#,regex,string,match,digit,C#,Regex,String,Match,Digit,我正在寻找一个正则表达式模式,它匹配一个长度正好为x(比如x是2-4)的数字,而不是别的 示例: “foo.bar 123 456789”,“foo.bar 456789 123”,“123”,“foo.bar 123”只能匹配“123” 所以。只有数字,没有空格,字母或其他东西 我该怎么做 编辑:我想使用c#中的Regex.Matches()函数来提取这个2-4位数字并在附加代码中使用。任何后跟{m,n}的模式都允许该模式出现m到n次。因此,在您的例子中,\d{m,n}表示所需的m和n值。如果

我正在寻找一个正则表达式模式,它匹配一个长度正好为x(比如x是2-4)的数字,而不是别的

示例:

“foo.bar 123 456789”
“foo.bar 456789 123”
“123”
“foo.bar 123”
只能匹配“123”

所以。只有数字,没有空格,字母或其他东西

我该怎么做


编辑:我想使用c#中的Regex.Matches()函数来提取这个2-4位数字并在附加代码中使用。

任何后跟
{m,n}
的模式都允许该模式出现m到n次。因此,在您的例子中,
\d{m,n}
表示所需的m和n值。如果必须是整数,请使用
\d{m}


如果要在x123y中匹配123,而不是在1234中匹配123,请使用
\d{3}(?=\d}$)(?可以使用基本正则表达式实现这一点:

\b(\d\d\d)\b
\b(\d{3})\b
-用于将数字与精确的3位数字进行匹配

如果需要可变数字:
\b(\d{2,4})\b
()
如果要捕获单词旁边的匹配项:
\D(\D{2,4})\D
()

\b
是单词边界(不匹配任何内容,它是零匹配字符)
\d
只匹配数字
\D
匹配任何非数字字符

()
圆括号中的所有内容都将捕获匹配项

如何
\d{2,4}
?您在使用什么来运行正则表达式?解决方案将根据您使用的正则表达式实现而有所不同。正如Naveed S所说,如果您想要匹配一个正是n位数的数字,则需要使用\d{n}但是,在您提供的示例中,\d{n,m}将作为它匹配的第一个数字,在每个示例中都是123。请使用此站点来测试您的正则表达式。我添加了另一个示例,以使我的愿望更清楚。\d{n}也匹配456和789,当n=3时。@MarcoFrost我的第二个正则表达式匹配3个数字,如果它们没有被任何数字包围。这是你需要的吗?@NaveedS看起来真的很棒!你的第二个正则表达式非常完美。:)