簡體   English   中英

在Qt中使用正則表達式查找兩個標簽之間的字符串

[英]Find strings between two tags with regex in Qt

有人可以幫我嗎?

我有一個包含 N 個子字符串的字符串,由標簽分隔,我必須獲取所有子字符串。 字符串就像

STARTfoo barENDSTART你好!ENDSTARTstackoverflowrulezEND

我想獲取 START/END 標簽之間的所有字符串,我嘗試了幾個正則表達式,但沒有成功:

(START)(.*)(END) 給了我第一個和最后一個標簽之間的所有競爭

(START)(\\w+)(END) 沒有結果

代碼非常簡單:

QString l_str "STARTfoo barENDSTARThi there!ENDSTARTstackoverflowrulezEND"; 
QRegExp rx("(START)(\w+)(END)");
QStringList list;
int pos = 0;
while ((pos = rx.indexIn(l_str, pos)) != -1)
{
    list << rx.cap(1);
    pos += rx.matchedLength();
}
qWarning() << list;

我想要一個結果列表,如:

STARTfoo欄END

START你好!END

STARTstackoverflowrulezEND

有什么幫助嗎?

謝謝!

使用rx.setMinimal(true).*使其變得懶惰:

QRegExp rx("START.*END");
rx.setMinimal(true);

請參閱QRegExp::setMinimal文檔

啟用或禁用最小匹配。 如果minimumfalse ,則匹配為貪婪(最大),這是默認值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM