检查八进制数

问题描述:

我用C++/Qt编写简单的应用程序。我有一个文本和一些八进制数字。我的应用使用空格分隔这段文字。我需要从文本中检查八进制数字。我如何用正则表达式从这个文本中选择八进制数字?检查八进制数

谢谢。

+0

以何种格式文本?数字之间的分隔符是什么?你能举几个例子吗? – 2010-05-03 14:06:26

+0

示例: x:= 123; a = 167; 所有数字都是八进制数。 – 0xAX 2010-05-03 14:08:27

您可以使用下面的正则表达式匹配只有八进制数:

^0[1-7][0-7]*$ 
  • ^,$:船锚
  • 0:一个文字0。所有八进制数字 以0开头。
  • [1-7]:Char类的数字从1 到7,因为只有这些是有效的八进制 数字。
  • *:前面的零个或更多的量词。

所以基本上这个正则表达式匹配只有在一开始就0,并且包含一个或多个数字从17这些字符串。

如果领导0要求是不存在,你可以使用正则表达式:

^[1-7][0-7]*$ 
+2

或simplier^0 [0-7] + $ +:可量化一次或多次 但它也会捕获00作为有效的八进制数 – VestniK 2010-05-03 14:20:31

+0

@Vestnik:这允许像'007'这样的数字。我想避免'> 1'前导零。 – codaddict 2010-05-03 14:23:19

+1

这个问题没有提到避免超过一个前导零,'007'是一个完全有效的八进制数。 – 2014-10-20 14:45:56