2010-05-03 31 views
2

我用C++/Qt編寫簡單的應用程序。我有一個文本和一些八進制數字。我的應用使用空格分隔這段文字。我需要從文本中檢查八進制數字。我如何用正則表達式從這個文本中選擇八進制數字?檢查八進制數

謝謝。

+0

以何種格式文本?數字之間的分隔符是什麼?你能舉幾個例子嗎? – 2010-05-03 14:06:26

+0

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

回答

3

您可以使用下面的正則表達式匹配只有八進制數:

^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