Improve / fix QRegularExpression* docs
Fixed a couple of typos; also, wrapped the snippets in a main() function, so that now the snippet file can be compiled (and therefore the compiler can help us at detecting those typos). Change-Id: Ie182a9c4cb451db13a6f4bfa5eaed66bc6966c8f Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Casper van Donderen <casper.vandonderen@gmail.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
This commit is contained in:
parent
589a18597f
commit
a2eff5c244
@ -38,17 +38,28 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
#include <QRegularExpression>
|
||||
#include <QRegularExpressionMatch>
|
||||
#include <QRegularExpressionMatchIterator>
|
||||
|
||||
int main() {
|
||||
|
||||
{
|
||||
//! [0]
|
||||
QRegularExpression re("a pattern");
|
||||
//! [0]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [1]
|
||||
QRegularExpression re;
|
||||
re.setPattern("another pattern");
|
||||
//! [1]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [2]
|
||||
// matches two digits followed by a space and a word
|
||||
QRegularExpression re("\\d\\d \\w+");
|
||||
@ -56,27 +67,31 @@ QRegularExpression re("\\d\\d \\w+");
|
||||
// matches a backslash
|
||||
QRegularExpression re2("\\\\");
|
||||
//! [2]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [3]
|
||||
QRegularExpression re("a third pattern");
|
||||
QString pattern = re.pattern(); // pattern == "a third pattern"
|
||||
//! [3]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [4]
|
||||
// matches "Qt rocks", but also "QT rocks", "QT ROCKS", "qT rOcKs", etc.
|
||||
QRegularExpression re("Qt rocks", QRegularExpression::CaseInsensitiveOption);
|
||||
//! [4]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [5]
|
||||
QRegularExpression re("^\\d+$");
|
||||
re.setPatternOptions(QRegularExpression::MultilineOption);
|
||||
// re matches any line in the subject string that contains only digits (but at least one)
|
||||
//! [5]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [6]
|
||||
QRegularExpression re = QRegularExpression("^two.*words$", QRegularExpression::MultilineOption
|
||||
| QRegularExpression::DotMatchesEverythingOption);
|
||||
@ -84,16 +99,18 @@ QRegularExpression re = QRegularExpression("^two.*words$", QRegularExpression::M
|
||||
QRegularExpression::PatternOptions options = re.patternOptions();
|
||||
// options == QRegularExpression::MultilineOption | QRegularExpression::DotMatchesEverythingOption
|
||||
//! [6]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [7]
|
||||
// match two digits followed by a space and a word
|
||||
QRegularExpression re("\\d\\d \\w+");
|
||||
QRegularExpressionMatch match = re.match("abc123 def");
|
||||
bool hasMatch = match.hasMatch(); // true
|
||||
//! [7]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [8]
|
||||
QRegularExpression re("\\d\\d \\w+");
|
||||
QRegularExpressionMatch match = re.match("abc123 def");
|
||||
@ -102,8 +119,9 @@ if (match.hasMatch()) {
|
||||
// ...
|
||||
}
|
||||
//! [8]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [9]
|
||||
QRegularExpression re("\\d\\d \\w+");
|
||||
QRegularExpressionMatch match = re.match("12 abc 45 def", 1);
|
||||
@ -112,31 +130,34 @@ if (match.hasMatch()) {
|
||||
// ...
|
||||
}
|
||||
//! [9]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [10]
|
||||
QRegularExpression re("^(\\d\\d)/(\\d\\d)/(\\d\\d\\d\\d)$");
|
||||
QRegularExpressionMatch match = re.match("08/12/1985");
|
||||
if (match.hasMatch()) {
|
||||
QString day = re.captured(1); // day == "08"
|
||||
QString month = re.captured(2); // month == "12"
|
||||
QString year = re.captured(3); // year == "1985"
|
||||
QString day = match.captured(1); // day == "08"
|
||||
QString month = match.captured(2); // month == "12"
|
||||
QString year = match.captured(3); // year == "1985"
|
||||
// ...
|
||||
}
|
||||
//! [10]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [11]
|
||||
QRegularExpression re("abc(\\d+)def");
|
||||
QRegularExpressionMatch match = re.match("XYZabc123defXYZ");
|
||||
if (match.hasMatch()) {
|
||||
int startOffset = re.capturedStart(1); // startOffset == 6
|
||||
int endOffset = re.capturedEnd(1); // endOffset == 9
|
||||
int startOffset = match.capturedStart(1); // startOffset == 6
|
||||
int endOffset = match.capturedEnd(1); // endOffset == 9
|
||||
// ...
|
||||
}
|
||||
//! [11]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [12]
|
||||
QRegularExpression re("^(?<date>\\d\\d)/(?<month>\\d\\d)/(?<year>\\d\\d\\d\\d)$");
|
||||
QRegularExpressionMatch match = re.match("08/12/1985");
|
||||
@ -146,14 +167,14 @@ if (match.hasMatch()) {
|
||||
QString year = match.captured("year"); // year == 1985
|
||||
}
|
||||
//! [12]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [13]
|
||||
QRegularExpression re("(\\w+)");
|
||||
QRegularExpressionMatchIterator i = re.globalMatch("the quick fox");
|
||||
//! [13]
|
||||
|
||||
|
||||
//! [14]
|
||||
QStringList words;
|
||||
while (i.hasNext()) {
|
||||
@ -163,72 +184,86 @@ while (i.hasNext()) {
|
||||
}
|
||||
// words contains "the", "quick", "fox"
|
||||
//! [14]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [15]
|
||||
QString pattern("^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d\\d?, \\d\\d\\d\\d$");
|
||||
QRegularExpression re(pattern);
|
||||
|
||||
QString input("Jan 21,");
|
||||
QRegularExpressionMatch match = re.match(input, 0, QRegularExpressionMatch::PartialPreferCompleteMatch);
|
||||
QRegularExpressionMatch match = re.match(input, 0, QRegularExpression::PartialPreferCompleteMatch);
|
||||
bool hasMatch = match.hasMatch(); // false
|
||||
bool hasPartialMatch = match.hasPartialMatch(); // true
|
||||
//! [15]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
QString pattern("^(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \\d\\d?, \\d\\d\\d\\d$");
|
||||
QRegularExpression re(pattern);
|
||||
//! [16]
|
||||
QString input("Dec 8, 1985");
|
||||
QRegularExpressionMatch match = re.match(input, 0, QRegularExpressionMatch::PartialPreferCompleteMatch);
|
||||
QRegularExpressionMatch match = re.match(input, 0, QRegularExpression::PartialPreferCompleteMatch);
|
||||
bool hasMatch = match.hasMatch(); // true
|
||||
bool hasPartialMatch = match.hasPartialMatch(); // false
|
||||
//! [16]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [17]
|
||||
QRegularExpression re("abc\\w+X|def");
|
||||
QRegularExpressionMatch match = re.match("abcdef", 0, QRegularExpressionMatch::PartialPreferCompleteMatch);
|
||||
QRegularExpressionMatch match = re.match("abcdef", 0, QRegularExpression::PartialPreferCompleteMatch);
|
||||
bool hasMatch = match.hasMatch(); // true
|
||||
bool hasPartialMatch = match.hasPartialMatch(); // false
|
||||
QString captured = match.captured(0); // captured == "def"
|
||||
//! [17]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [18]
|
||||
QRegularExpression re("abc\\w+X|defY");
|
||||
QRegularExpressionMatch match = re.match("abcdef", 0, QRegularExpressionMatch::PartialPreferCompleteMatch);
|
||||
QRegularExpressionMatch match = re.match("abcdef", 0, QRegularExpression::PartialPreferCompleteMatch);
|
||||
bool hasMatch = match.hasMatch(); // false
|
||||
bool hasPartialMatch = match.hasPartialMatch(); // true
|
||||
QString captured = match.captured(0); // captured == "abcdef"
|
||||
//! [18]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [19]
|
||||
QRegularExpression re("abc|ab");
|
||||
QRegularExpressionMatch match = re.match("ab", 0, QRegularExpressionMatch::PartialPreferFirstMatch);
|
||||
QRegularExpressionMatch match = re.match("ab", 0, QRegularExpression::PartialPreferFirstMatch);
|
||||
bool hasMatch = match.hasMatch(); // false
|
||||
bool hasPartialMatch = match.hasPartialMatch(); // true
|
||||
//! [19]
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
//! [20]
|
||||
QRegularExpression re("abc(def)?");
|
||||
QRegularExpressionMatch match = re.match("abc", 0, QRegularExpressionMatch::PartialPreferFirstMatch);
|
||||
QRegularExpressionMatch match = re.match("abc", 0, QRegularExpression::PartialPreferFirstMatch);
|
||||
bool hasMatch = match.hasMatch(); // false
|
||||
bool hasPartialMatch = match.hasPartialMatch(); // true
|
||||
//! [20]
|
||||
}
|
||||
|
||||
{
|
||||
//! [21]
|
||||
QRegularExpression re("(abc)*");
|
||||
QRegularExpressionMatch match = re.match("abc", 0, QRegularExpressionMatch::PartialPreferFirstMatch);
|
||||
QRegularExpressionMatch match = re.match("abc", 0, QRegularExpression::PartialPreferFirstMatch);
|
||||
bool hasMatch = match.hasMatch(); // false
|
||||
bool hasPartialMatch = match.hasPartialMatch(); // true
|
||||
//! [21]
|
||||
}
|
||||
|
||||
{
|
||||
//! [22]
|
||||
QRegularExpression invalidRe("(unmatched|parenthesis");
|
||||
bool isValid = invalidRe.isValid(); // false
|
||||
//! [22]
|
||||
}
|
||||
|
||||
{
|
||||
//! [23]
|
||||
QRegularExpression invalidRe("(unmatched|parenthesis");
|
||||
if (!invalidRe.isValid()) {
|
||||
@ -237,44 +272,62 @@ if (!invalidRe.isValid()) {
|
||||
// ...
|
||||
}
|
||||
//! [23]
|
||||
}
|
||||
|
||||
{
|
||||
//! [24]
|
||||
QRegularExpression re("^this pattern must match exactly$");
|
||||
//! [24]
|
||||
}
|
||||
|
||||
{
|
||||
//! [25]
|
||||
QString p("a .*|pattern");
|
||||
QRegularExpression re("\\A(?:" + p + ")\\z"); // re matches exactly the pattern string p
|
||||
//! [25]
|
||||
}
|
||||
|
||||
{
|
||||
//! [26]
|
||||
QString escaped = QRegularExpression::escape("a(x) = f(x) + g(x)");
|
||||
// escaped == "a\\(x\\)\\ \\=\\ f\\(x\\)\\ \\+\\ g\\(x\\)"
|
||||
//! [26]
|
||||
}
|
||||
|
||||
{
|
||||
QString name;
|
||||
QString nickname;
|
||||
//! [27]
|
||||
QString pattern = "(" + QRegularExpression::escape(name) +
|
||||
"|" + QRegularExpression::escape(nickname) + ")";
|
||||
QRegularExpression re(pattern);
|
||||
//! [27]
|
||||
}
|
||||
|
||||
{
|
||||
QString string;
|
||||
QRegularExpression re;
|
||||
//! [28]
|
||||
QRegularExpressionMatch match = re.match(...);
|
||||
QRegularExpressionMatch match = re.match(string);
|
||||
for (int i = 0; i <= match.lastCapturedIndex(); ++i) {
|
||||
QString captured = match.captured(i);
|
||||
// ...
|
||||
}
|
||||
//! [28]
|
||||
}
|
||||
|
||||
{
|
||||
//! [29]
|
||||
QRegularExpression("(\\d\\d) (?<name>\\w+)");
|
||||
QRegularExpression re("(\\d\\d) (?<name>\\w+)");
|
||||
QRegularExpressionMatch match = re.match("23 Jordan");
|
||||
if (match.hasMatch()) {
|
||||
QString number = match.captured(1); // first == "23"
|
||||
QString name = match.captured("name"); // name == "Jordan"
|
||||
}
|
||||
//! [29]
|
||||
}
|
||||
|
||||
{
|
||||
//! [30]
|
||||
// extracts the words
|
||||
QRegularExpression re("(\\w+)");
|
||||
@ -285,5 +338,6 @@ while (i.hasNext()) {
|
||||
// ...
|
||||
}
|
||||
//! [30]
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user