0

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

例子:

"foo.bar 123 456789", "foo.bar 456789 123", " 123","foo.bar123 "只能匹配“123”

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

我该怎么做?

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

4

2 回答 2

1

您可以使用基本的 RegEx 来实现这一点:

\b(\d\d\d)\b\b(\d{3})\b- 用于匹配正好 3 位数字的数字

如果您想要可变数字:(\b(\d{2,4})\b此处解释演示
如果您想捕获单词旁边的匹配项:(\D(\d{2,4})\D此处解释演示

\b是单词边界(不匹配任何内容,它是零匹配字符)
\d仅匹配数字
\D匹配任何不是数字的字符
()圆括号中的所有内容都将捕获匹配项

于 2013-03-09T17:16:13.253 回答
1

后跟 a 的任何模式{m,n}都允许该模式出现 m 到 n 次。因此,在您的情况下\d{m,n},对于所需的 m 和 n 值。如果它必须是一个整数,请使用\d{m}

如果要匹配 x123y 中的 123 而不是 1234 中的 123,请使用\d{3}(?=\D|$)(?<=(\D|^)\d{3})

它向前看以确保 3 位数字之后的字符根本不是数字,向后看以确保 3 位数字之前的字符是非数字或根本没有。

于 2013-03-09T14:35:08.207 回答