I am trying a simple pattern to extract numbers from a ASCII text file. The code I am using
QTextStream in( &file );
QString line = in.readline();
re.setPattern ( " -?[0-9]+\.?[0-9]* ");
a testing line was:
"Expected Vibration Frequency = 2.52 MHz"
Using RegexBuddy I tested the pattern and the results were
However, when I implement the above code I get
I tried the Qt expression of -?\d*\.?\d* and got the same thing. Why are the ascii characters after the digits included?
welcome to devnet
My guess is that the syntax handling used is different. You need to check the documentation of "QRegularExpression":http://qt-project.org/doc/qt-5/qregularexpression.html
I have never used it. It has been implemented for Qt5. The older version "QRegExp":http://qt-project.org/doc/qt-5/QRegExp.html is also still available.There you have different possibilities.
The "example code for QRegExp":http://qt-project.org/doc/qt-5/qtwidgets-tools-regexp-example.html is a handy tool to check different possibilities. Unfortunately, it is still based on the older QRegExp.
Hi and welcome to devnet,
I'd say you are using the wrong tool:
QString line("Expected Vibration Frequency = 2.52 MHz");
re.setPattern ( "-?[0-9]+\.?[0-9]*");
QRegularExpressionMatch match = re.match(line);
qDebug() << match.captured();
And you'll get 2.52
Hope it helps
Thanks for the help. I had not tried to use the QRegularExpressionMatch. Changing code as your example showed solved the problem.