2014-02-13 39 views
0

可以說我有一個字符串,如這樣的:QRegExp找到在HTML標籤不是第n個字符

<span class='hi'>Blah <span class='bye'> is here </span> and here</span> 

而且我想要得到的第7個字符的字符串,是不是部分索引一個HTML標籤(「我」)。我知道我可以通過分割和遍歷塊來做到這一點,但我想知道是否有QRegExp可以用來做到這一點。我試着用regexp.indexIn()的東西跑了一堆:

QRegExp r("[^<](?!>)"); // Matches index 1 
QRegExp r("[^<](?![^>])"); // Matches index 15 (the ' within the first span) 
QRegExp r("[^<](.){7}(?!>)"); // Matches index 1 
QRegExp r("^<.>[^<](?!>).{7}"); // Gives me -1 

是否有可以做這件事(一般)一個正則表達式?

回答

0

rx使用正則表達式解析HTML通常不是一個好主意,但很多人都這樣做。你可以嘗試更換嗎?

QRegExp rx("<[^>]*>"); 
QString example = "<span class='hi'>Blah <span class='bye'> is here </span> and here</span>"; 
example.replace(rx, ""); 

然後找到第7個字符?使用:

example.at(7); 
+0

是的,我意識到這不是理想的,但它比解析到DOM或類似的東西(或是它?)少得多的計算工作。問題是我想在特定點插入一個跨度,所以我們必須將所有移除的跨度放回去。所以我希望得到正則表達式來轉換成索引,這樣我就可以在那個時候打出一個跨度。我也可以使用循環來完成它。 – gremwell