从字符串中获取一个恰好有x位数字的数字
本文关键字:数字 一个 字符串 获取 | 更新日期: 2023-09-27 18:03:01
我正在寻找一个正则表达式模式,它匹配长度恰好为x的数字(假设x是2-4),而不是其他。
例子:
"foo.bar 123 456789"
, "foo.bar 456789 123"
, " 123"
, "foo.bar123 "
只能匹配"123"
。只有数字,没有空格,字母或其他东西。
我该怎么做?
编辑:我想使用c#中的Regex.Matches()函数来提取这个2-4位数字,并在其他代码中使用它。
任何后跟{m,n}
的模式都允许该模式出现m到n次。因此,在您的情况下,'d{m,n}
用于所需的m和n的值。如果必须是整数,则使用'd{m}
如果你想在x123y中匹配123而不是在1234中,使用'd{3}(?='D|$)(?<=('D|^)'d{3})
它有一个向前的检查,以确保在3个数字之后的字符是一个非数字或什么都没有,并向后看,以确保在3个数字之前的字符是一个非数字或什么都没有。
您可以使用基本的RegEx实现这一点:
'b('d'd'd)'b
或'b('d{3})'b
-用于匹配恰好为3位的数字
如果你想要可变数字:'b('d{2,4})'b
(演示在这里解释)
如果您想捕获单词旁边的匹配:'D('d{2,4})'D
(在这里解释演示)
'b
是一个词边界(不匹配任何东西,它是一个零匹配字符)'d
只匹配数字'D
匹配非数字的任何字符()
括号内的内容将捕获匹配