我正在寻找一个正则表达式模式,它恰好匹配一个长度为x的数字(假设x是2-4),而不匹配其他值。
示例:
"foo.bar 123 456789"
、"foo.bar 456789 123"
、" 123"
、"foo.bar123 "
只能匹配"123“
所以。只有数字,没有空格,字母或其他东西。
我该怎么做呢?
编辑:我想使用c#中的Regex.Matches()函数来提取这个2-4位的数字,并在其他代码中使用它。
发布于 2013-03-09 22:35:08
任何后跟{m,n}
的模式都允许该模式出现m到n次。因此,在本例中,m和n的必需值为\d{m,n}
。
如果要匹配x123y中的123,而不是1234中的123,请使用\d{3}(?=\D|$)(?<=(\D|^)\d{3})
它向前看,以确保3位数字后面的字符是非数字字符或根本不是,并向后看,以确保3位数字之前的字符是非数字字符或根本不是。
发布于 2013-03-10 01:16:13
您可以使用基本RegEx来实现这一点:
\b(\d\d\d)\b
或\b(\d{3})\b
-用于匹配恰好为3位数字的数字
如果您想要变量数字:\b(\d{2,4})\b
(explained demo here)
如果你想捕捉单词旁边的匹配:\D(\d{2,4})\D
(explained demo here)
\b
是一个单词边界(不匹配任何内容,它是一个零匹配字符)
\d
仅匹配数字
\D
匹配任何不是数字的字符
()
所有圆括号中的内容都将捕获匹配项
https://stackoverflow.com/questions/15311619
复制相似问题