QRegularExpression Multiline stop matching first line
-
Hi guys, I'm writing a program that use Regular Expression and MultilineOption, I wrote this code but matching stop on first line. Why? What I'm doing wrong?
QString recv = "AUTH-<username>-<password>\nINFO-ID:45\nREG-<username>-<password>-<name>-<status>\nSEND-ID:195-DATE:12:30 2/02/2015 <esempio>\nUPDATEN-<newname>\nUPDATES-<newstatus>\n"; QRegularExpression exp = QRegularExpression("(SEND)-ID:(\\\d{1,4})-DATE:(\\\d{1,2}):(\\\d{2}) (\\\d{1,2})\\/(\\\d{2})\\/(\\\d{2,4}) <(.+)>\\\n|(AUTH)-<(.+)>-<(.+)>\\\n|(INFO)-ID:(\\\d{1,4})\\\n|(REG)-<(.+)>-<(.+)>-<(.+)>-<(.+)>\\\n|(UPDATEN)-<(.+)>\\\n|(UPDATES)-<(.+)>\\\n", QRegularExpression::MultilineOption); qDebug() << exp.pattern(); QRegularExpressionMatch match = exp.match(recv); qDebug() << match.lastCapturedIndex(); for (int i = 0; i <= match.lastCapturedIndex(); ++i) { qDebug() << match.captured(i); }
Can someone help me?
Edited: Please put code after ```(3 backticks) and end with the same - p3c0
-
Hi and welcome do devnet,
found some issues in your regexp
DATE:(\\\d{1,2}):(\\\d)
should beDATE:(\\\d{1,2}):(\\\d{2})
(\\\d{1,2})\\/(\\\d)\\/(\\\d{2,4})
should be(\\\d{1,2})\\/(\\\d{1,2})\\/(\\\d{2,4})
- in your regexp
SEND-ID
followsAUTH
but in your string is not true
BTW a simple solution to make debug easier could be to split the string in lines and process a line at time