Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在寻找一个正则表达式模式,它匹配一个长度正好为 x 的数字(比如 x 是 2-4),仅此而已。
例子:
"foo.bar 123 456789", "foo.bar 456789 123", " 123","foo.bar123 "只能匹配“123”
"foo.bar 123 456789"
"foo.bar 456789 123"
" 123"
"foo.bar123 "
所以。只有数字,没有空格、字母或其他东西。
我该怎么做?
编辑:我想在 c# 中使用 Regex.Matches() 函数来提取这个 2-4 位数字并在附加代码中使用它。
您可以使用基本的 RegEx 来实现这一点:
\b(\d\d\d)\b或\b(\d{3})\b- 用于匹配正好 3 位数字的数字
\b(\d\d\d)\b
\b(\d{3})\b
如果您想要可变数字:(\b(\d{2,4})\b此处解释演示) 如果您想捕获单词旁边的匹配项:(\D(\d{2,4})\D此处解释演示)
\b(\d{2,4})\b
\D(\d{2,4})\D
\b是单词边界(不匹配任何内容,它是零匹配字符) \d仅匹配数字 \D匹配任何不是数字的字符 ()圆括号中的所有内容都将捕获匹配项
\b
\d
\D
()
后跟 a 的任何模式{m,n}都允许该模式出现 m 到 n 次。因此,在您的情况下\d{m,n},对于所需的 m 和 n 值。如果它必须是一个整数,请使用\d{m}
{m,n}
\d{m,n}
\d{m}
如果要匹配 x123y 中的 123 而不是 1234 中的 123,请使用\d{3}(?=\D|$)(?<=(\D|^)\d{3})
\d{3}(?=\D|$)(?<=(\D|^)\d{3})
它向前看以确保 3 位数字之后的字符根本不是数字,向后看以确保 3 位数字之前的字符是非数字或根本没有。