我正在寻找一个正则表达式模式,它恰好匹配一个长度为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
复制相似问题