2014-03-06 50 views
0

我想捕捉明星在下面的字符串替換的文本的第二occurence:正則表達式使用Qt捕捉一些文字

&nbsp;SW * <br> 

即字符串開始&nbsp;SW在爲QString與<br>結束,使用正則表達式與Qt。

這裏一個例子:該字符串是

&nbsp;&nbsp;SW = min(1, max(0, pow(10, -0.2 - 6.5) ** (1.0/0.2)))<br> 

和預期的結果是

= min(1, max(0, pow(10, -0.2 - 6.5) ** (1.0/0.2))) 

到目前爲止,我有QRegExp rx("^[\&nbsp;SW](.*)[<br>]$");未編制。

你會怎麼做?

+0

我會從關於正則表達式的教程開始。看看一些例子以及你如何編寫語法。然後,使用在線正則表達式測試程序嘗試一些示例行,然後從那裏開始工作。 – MatthiasB

回答

1

編譯問題可能是由於試圖跳過&符號(\&)。但除此之外,你的正則表達式大多是正確的,只是過度使用字符組([]),它們不適用於分組。這種表達的作品在我的測試:&nbsp;SW(.*)<br>,所以你的情況,你會做這樣的事情

QRegExp rx("&nbsp;SW(.*)<br>") 
0

確切模式是QLatin1String(".*&nbsp;SW([^<]*)<br>.*")和捕獲此代碼爲我工作

 QRegExp rx(QLatin1String(".*&nbsp;SW([^<]*)<br>.*")); 

     int p = 0; 
     QString cap ; 
     if((p = rx.indexIn(str, p)) != -1) 
      cap = rx.cap(1).trimmed(); 

諾塔好處:應該捕獲括號內的元素的第一次出現,而不是cap(1)而不是cap(0),其捕獲整個模式而不是括號的內容。