The regex's as they currently exist: const QString KGameSvgDocumentPrivate::WSP = QString("\\s"); const QString KGameSvgDocumentPrivate::WSP_ASTERISK = QString(WSP + '*'); const char KGameSvgDocumentPrivate::COMMA = ','; const QString KGameSvgDocumentPrivate::COMMA_WSP = QString("((" + WSP + '+' + COMMA + '?' + WSP + "*)|(" + COMMA + WSP + "*))"); const QString KGameSvgDocumentPrivate::NUMBER = QString("(([-|\\+]?\\d+(\\.)*\\d*(e)?[-|\\+]?\\d*)|([-|\\+]?(\\.)+\\d*(e)?[-|\\+]?\\d*))"); const QString KGameSvgDocumentPrivate::OPEN_PARENS = QString("\\("); const QString KGameSvgDocumentPrivate::CLOSE_PARENS = QString("\\)"); const QString KGameSvgDocumentPrivate::MATRIX = QString("matrix" + WSP_ASTERISK + OPEN_PARENS + WSP_ASTERISK + NUMBER + COMMA_WSP + NUMBER + COMMA_WSP + NUMBER + COMMA_WSP + NUMBER + COMMA_WSP + NUMBER + COMMA_WSP + NUMBER + WSP_ASTERISK + CLOSE_PARENS); const QString KGameSvgDocumentPrivate::TRANSLATE = QString("translate" + WSP_ASTERISK + OPEN_PARENS + WSP_ASTERISK + NUMBER + "(?:" + COMMA_WSP + NUMBER + ")?" + WSP_ASTERISK + CLOSE_PARENS); const QString KGameSvgDocumentPrivate::SCALE = QString("scale" + WSP_ASTERISK + OPEN_PARENS + WSP_ASTERISK + NUMBER + "(?:" + COMMA_WSP + NUMBER + ")?" + WSP_ASTERISK + CLOSE_PARENS); const QString KGameSvgDocumentPrivate::ROTATE = QString("rotate" + WSP_ASTERISK + OPEN_PARENS + WSP_ASTERISK + NUMBER + "(?:" + COMMA_WSP + NUMBER + COMMA_WSP + NUMBER + ")?" + WSP_ASTERISK + CLOSE_PARENS); const QString KGameSvgDocumentPrivate::SKEW_X = QString("skewX" + WSP_ASTERISK + OPEN_PARENS + WSP_ASTERISK + NUMBER + WSP_ASTERISK + CLOSE_PARENS); const QString KGameSvgDocumentPrivate::SKEW_Y = QString("skewY" + WSP_ASTERISK + OPEN_PARENS + WSP_ASTERISK + NUMBER + WSP_ASTERISK + CLOSE_PARENS); const QString KGameSvgDocumentPrivate::TRANSFORM = QString("(?:" + MATRIX + "|" + TRANSLATE + "|" + SCALE + "|" + ROTATE + "|" + SKEW_X + "|" + SKEW_Y + ")"); const QString KGameSvgDocumentPrivate::TRANSFORMS = QString("(?:" + TRANSFORM + "|" + "(?:" + TRANSFORM + COMMA_WSP + "+)*" + TRANSFORM + ")"); The unit tests that validate them: QRegExp rx; // rx.setPattern(m_svgDom.d->WSP); rx.setPattern(wsp); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch(" ")); QVERIFY(!rx.exactMatch("")); rx.setPattern(wsp_asterisk); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch(" ")); QVERIFY(rx.exactMatch("")); QVERIFY(rx.exactMatch(" ")); QVERIFY(rx.exactMatch(" ")); rx.setPattern(comma); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch(",")); QVERIFY(!rx.exactMatch("")); QVERIFY(!rx.exactMatch(" , ")); rx.setPattern(comma_wsp); QVERIFY(rx.isValid()); // qDebug () << comma_wsp; QVERIFY(rx.exactMatch(" ,")); QVERIFY(rx.exactMatch(" , ")); QVERIFY(rx.exactMatch(" ")); QVERIFY(rx.exactMatch(", ")); QVERIFY(rx.exactMatch(",")); QVERIFY(rx.exactMatch(" , ")); QVERIFY(rx.exactMatch(" , ")); rx.setPattern(number); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch("6")); QVERIFY(rx.exactMatch("64")); QVERIFY(rx.exactMatch("5.2")); QVERIFY(rx.exactMatch("0.003")); QVERIFY(rx.exactMatch("5.1234e9")); QVERIFY(rx.exactMatch("5.1234e-9")); QVERIFY(rx.exactMatch("5.1234e-09")); QVERIFY(rx.exactMatch("-6")); QVERIFY(rx.exactMatch("+5.2")); QVERIFY(rx.exactMatch("-0.003")); QVERIFY(rx.exactMatch("-5.1234e9")); QVERIFY(rx.exactMatch("5.186907e-2")); QVERIFY(rx.exactMatch("-5.1234e-09")); QVERIFY(rx.exactMatch("444.71799")); QVERIFY(rx.exactMatch("16.30829")); QVERIFY(rx.exactMatch("0")); QVERIFY(rx.exactMatch("00002")); QVERIFY(rx.exactMatch(".00002")); rx.setPattern(openParens); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch("(")); QVERIFY(!rx.exactMatch("")); QVERIFY(!rx.exactMatch("( ")); rx.setPattern(closeParens); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch(")")); QVERIFY(!rx.exactMatch("")); QVERIFY(!rx.exactMatch(") ")); rx.setPattern(matrix); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch("matrix(1,0,0,1,0,0)")); QVERIFY(rx.exactMatch("matrix(5.186907e-2,0,0,5.186907e-2,444.71799,16.30829)")); QVERIFY(rx.exactMatch("matrix ( 5.186907e-2, 0,0, 5.186907e-2,444.71799,16.30829)")); QVERIFY(rx.exactMatch("matrix ( +5.186907e-2, 0 ,0, -5.186907e-2,444.71799, 16.30829)")); QVERIFY(!rx.exactMatch("matrix ( -5.186907e-2, 0 , -5.186907e-2,444.71799, 16.30829)")); QVERIFY(!rx.exactMatch("matrix ( +5.186907e-2, 0 ,0,, -5.186907e-2,444.71799, 16.30829)")); QVERIFY(rx.exactMatch("matrix ( +.5186907e-2, 0 ,0, -5.186907e-2,444.71799, 16.30829)")); rx.setPattern(translate); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch("translate(10)")); QVERIFY(rx.exactMatch("translate(-10.2345)")); QVERIFY(rx.exactMatch("translate(10, 23)")); QVERIFY(rx.exactMatch("translate(10 , -.765)")); QVERIFY(!rx.exactMatch("translate(10 , -.765.0)")); QVERIFY(!rx.exactMatch("translate(10 , ,-.7650)")); rx.setPattern(scale); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch("scale(10)")); QVERIFY(rx.exactMatch("scale(-10.2345)")); QVERIFY(rx.exactMatch("scale(10, 23)")); QVERIFY(rx.exactMatch("scale(10 , -.765)")); QVERIFY(!rx.exactMatch("scale(10 , -.765.0)")); QVERIFY(!rx.exactMatch("scale(10 , ,-.7650)")); rx.setPattern(rotate); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch("rotate(45)")); QVERIFY(rx.exactMatch("rotate(-26.765)")); QVERIFY(rx.exactMatch("rotate(-26.765, 10, 20)")); QVERIFY(rx.exactMatch("rotate(-26.765, 60, .20)")); QVERIFY(rx.exactMatch("rotate(-26.765, -10, 2.0)")); QVERIFY(!rx.exactMatch("rotate(-26.765, -10)")); rx.setPattern(skewX); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch("skewX(10)")); QVERIFY(rx.exactMatch("skewX(-210)")); QVERIFY(rx.exactMatch("skewX(+10.123456)")); QVERIFY(rx.exactMatch("skewX(0.00000345)")); rx.setPattern(skewY); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch("skewY(10)")); QVERIFY(rx.exactMatch("skewY(-210)")); QVERIFY(rx.exactMatch("skewY(+10.12346e4)")); QVERIFY(rx.exactMatch("skewY(-0.00000345)")); rx.setPattern(transform); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch("matrix(5.186907e-2,0,0,5.186907e-2,444.71799,16.30829)")); QVERIFY(rx.exactMatch("translate(10, 23)")); QVERIFY(rx.exactMatch("scale(10 , -.765)")); QVERIFY(rx.exactMatch("rotate(-26.765, 60, .20)")); QVERIFY(rx.exactMatch("skewX(+10.123456)")); QVERIFY(rx.exactMatch("skewY(-0.00000345)")); QVERIFY(rx.exactMatch("skewY(-0.00000345)")); rx.setPattern(transforms); QVERIFY(rx.isValid()); QVERIFY(rx.exactMatch("matrix(5.186907e-2,0,0,5.186907e-2,444.71799,16.30829)")); QVERIFY(rx.exactMatch("rotate(-26.765, 60, .20)")); QVERIFY(rx.exactMatch("translate(-10,-20) scale(2) rotate(45) translate(5,10)")); QVERIFY(rx.exactMatch("translate(-10,-20), scale(2),rotate(45) translate(5,10), matrix(1,2,3,4,5,6)"));