2013-05-05 47 views
0

我想從這個文本中提取 「246」:QRegExp非捕獲括號

Responsible: John Doe 
Number: 246 
Date: 24-12-2005 

使用QRegExp,模式:

(?:Number:)\d+ 

我有望獲得:

246 

但是我得到了:

Number: 246 

我試圖避免捕獲組。

+1

請出示片段您用來打印的代碼。輸出是整個比賽,你可能沒有使用正確的功能。 – Mat 2013-05-05 20:18:48

+0

我正在使用QRegExp :: cap()。 – TheVTM 2013-05-05 20:39:16

回答

2

您可能需要像Number: (\d+)這樣的正則表達式 - 它將明確捕獲組1中的數字,您可以使用cap(1)獲取這些數字。 cap(0)將返回整個比賽,包括任何非捕獲組,如(?:Number:)

+0

我知道,我試圖避免捕捉組。 – TheVTM 2013-05-05 20:39:39

+0

@TheVTM:沒有捕獲組=>你得到完整的匹配,其中_includes_沒有捕獲組。如果你想捕捉一部分,你需要一個捕獲組。 – Mat 2013-05-05 20:40:36

+0

這是對的嗎? 我的意思是...應該是這樣嗎? 引起參考類聲音的另一種方式。 – TheVTM 2013-05-05 20:44:54

1

你可以試試這個:

(?=Number: (\d+)) 

在這種情況下,因爲它是嵌入在一個零長度前瞻整個模式不匹配,唯一的結果就是捕獲組

+0

QRegExp不支持\ K。 :( – TheVTM 2013-05-05 20:51:38

+0

@TheVTM:你說得對,我會更新我的文章 – 2013-05-05 20:58:42