Skip to content

Commit e7116e6

Browse files
committed
Fix \s in regexpr
In QRegExpr \s refers to QChar::isSpace, which says that a space can be: * QChar::Separator_Space => [Unicode class name Zs][Zs] - U+0020 SPACE - U+00A0 NO-BREAK SPACE - and 15 more codes that cannot occur in G codes * QChar::Separator_Line => [Unicode class name Zl][Zl] - U+2028 LINE SEPARATOR * QChar::Separator_Paragraph => [Unicode class name Zp][Zp] - U+2029 PARAGRAPH SEPARATOR Thus, for G codes in QRegExpr \s is equal to U+0020. QRegularExpression follows the [Perl specification][PS], where \s can be: * U+0009 CHARACTER TABULATION * U+000A LINE FEED * U+000B LINE TABULATION * U+000C FORM FEED * U+000D CARRIAGE RETURN * U+0020 SPACE * U+0085 NEXT LINE * U+200E LEFT-TO-RIGHT MARK * U+200F RIGHT-TO-LEFT MARK * U+2028 LINE SEPARATOR * U+2029 PARAGRAPH SEPARATOR Therefore, "\s" is replaced by " \t". [Zs]: https://www.fileformat.info/info/unicode/category/Zs/list.htm [Zl]: https://www.fileformat.info/info/unicode/category/Zl/list.htm [Zp]: https://www.fileformat.info/info/unicode/category/Zp/list.htm [PS]: https://perldoc.perl.org/perlre#Details-on-some-modifiers
1 parent 43fe9e9 commit e7116e6

6 files changed

Lines changed: 28 additions & 28 deletions

File tree

gcodeshared/serialportconfigdialog.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,7 +401,7 @@ void SerialPortConfigDialog::changeSettings()
401401

402402
list.clear();
403403
list.append(settings.value("EndOfProgExp",
404-
(QStringList() << "(M30|M02|M2|M99)[\\n\\r\\s]{1,}%" << "")).toStringList());
404+
(QStringList() << "(M30|M02|M2|M99)[\\n\\r \\t]{1,}%" << "")).toStringList());
405405
list.removeDuplicates();
406406
endOfProgComboBox->insertItems(0, list);
407407

gcodeshared/utils/filepatterns.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@
2626
#define FILENAME_SINU840 "%_N_[a-zA-Z0-9_]{1,31}_(MPF|SPF|TEA|COM|PLC|DEF|INI)"
2727
#define FILENAME_OSP "\\$[A-Z]{1,1}[A-Z0-9_-]{1,}\\.(MIN|SSB|SDF|TOP|LIB|SUB|MSB)[%]{0,1}"
2828
#define FILENAME_FANUC "(?:\\n|\\r)(O|:)[0-9]{1,}"
29-
#define FILENAME_SINU "%\\b(MPF|SPF|TEA)[\\s]{0,3}[0-9]{1,4}\\b"
30-
#define FILENAME_HEID1 "%[a-zA-Z0-9_]{1,30}(\\s)"
31-
#define FILENAME_HEID2 "(BEGIN)(\\sPGM\\s)[a-zA-Z0-9_-+*]{1,}(\\sMM|\\sINCH)"
32-
#define FILENAME_PHIL "%PM[\\s]{1,}N[0-9]{4,4}"
29+
#define FILENAME_SINU "%\\b(MPF|SPF|TEA)[ \\t]{0,3}[0-9]{1,4}\\b"
30+
#define FILENAME_HEID1 "%[a-zA-Z0-9_]{1,30}( \\t)"
31+
#define FILENAME_HEID2 "(BEGIN)([ \\t]PGM[ \\t])[a-zA-Z0-9_-+*]{1,}([ \\t]MM|[ \\t]INCH)"
32+
#define FILENAME_PHIL "%PM[ \\t]{1,}N[0-9]{4,4}"
3333
#define FILENAME_FADAL "(N1)(O|:)[0-9]{1,}"
3434

3535
#endif // FILEPATTERNS_H

gcodeshared/utils/guessfilename.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,9 @@ Utils::FileExt Utils::guessFileNameByProgNum(const QString& text)
9393

9494
if (match.hasMatch()) {
9595
file.name = match.captured();
96-
//name1.remove(QRegularExpression("%(MPF|SPF|TEA)[\\s]{0,3}"));
96+
//name1.remove(QRegularExpression("%(MPF|SPF|TEA)[ \\t]{0,3}"));
9797

98-
regex.setPattern("%(MPF|SPF|TEA)[\\s]{0,3}");
98+
regex.setPattern("%(MPF|SPF|TEA)[ \\t]{0,3}");
9999
match = regex.match(file.name);
100100

101101
if (match.hasMatch()) {
@@ -119,7 +119,7 @@ Utils::FileExt Utils::guessFileNameByProgNum(const QString& text)
119119

120120
if (match.hasMatch()) {
121121
file.name = match.captured();
122-
file.name.remove(QRegularExpression("%PM[\\s]{1,}[N]{1,1}"));
122+
file.name.remove(QRegularExpression("%PM[ \\t]{1,}[N]{1,1}"));
123123
file.ext.clear();
124124
qDebug() << "12" << file.name << file.ext;
125125
break;
@@ -148,7 +148,7 @@ Utils::FileExt Utils::guessFileNameByProgNum(const QString& text)
148148
if (match.hasMatch()) {
149149
file.name = match.captured();
150150
file.name.remove("%");
151-
file.name.remove(QRegularExpression("\\s"));
151+
file.name.remove(QRegularExpression("[ \\t]"));
152152
file.ext.clear();
153153
qDebug() << "14" << file.name << file.ext;
154154
break;
@@ -159,8 +159,8 @@ Utils::FileExt Utils::guessFileNameByProgNum(const QString& text)
159159

160160
if (match.hasMatch()) {
161161
file.name = match.captured();
162-
file.name.remove(QRegularExpression("(BEGIN)(\\sPGM\\s)"));
163-
file.name.remove(QRegularExpression("(\\sMM|\\sINCH)"));
162+
file.name.remove(QRegularExpression("(BEGIN)([ \\t]PGM[ \\t])"));
163+
file.name.remove(QRegularExpression("([ \\t]MM|[ \\t]INCH)"));
164164
file.ext.clear();
165165

166166
break;

gcodeworkshop/src/gcoderdocument.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,7 @@ void GCoderDocument::changeDateInComment()
478478

479479
QRegularExpression regex;
480480
QString strDate = QLocale().toString(QDate::currentDate(), QLocale::ShortFormat);
481-
regex.setPattern(tr("(DATE)") + "[:\\s]*[\\d]{1,4}(\\.|-|/)[\\d]{1,2}(\\.|-|/)[\\d]{2,4}");
481+
regex.setPattern(tr("(DATE)") + "[: \\t]*[\\d]{1,4}(\\.|-|/)[\\d]{1,2}(\\.|-|/)[\\d]{2,4}");
482482
QTextCursor cursor = textCursor();
483483
cursor.setPosition(0);
484484

@@ -496,12 +496,12 @@ void GCoderDocument::changeDateInComment()
496496
} else {
497497
cursor = textCursor();
498498

499-
regex.setPattern("(\\(){1,1}[\\s]{0,}[\\d]{1,4}(\\.|-|/)[\\d]{1,2}(\\.|-|/)[\\d]{2,4}[\\s]{0,5}(\\)){1,1}");
499+
regex.setPattern("(\\(){1,1}[ \\t]{0,}[\\d]{1,4}(\\.|-|/)[\\d]{1,2}(\\.|-|/)[\\d]{2,4}[ \\t]{0,5}(\\)){1,1}");
500500
cursor.setPosition(0);
501501
cursor = document()->find(regex, cursor);
502502

503503
if (cursor.isNull()) {
504-
regex.setPattern("(;){1,1}[\\s]{0,}[\\d]{1,4}(\\.|-|/)[\\d]{1,2}(\\.|-|/)[\\d]{2,4}[\\s]{0,5}");
504+
regex.setPattern("(;){1,1}[ \\t]{0,}[\\d]{1,4}(\\.|-|/)[\\d]{1,2}(\\.|-|/)[\\d]{2,4}[ \\t]{0,5}");
505505
cursor.setPosition(0);
506506
cursor = document()->find(regex, cursor);
507507
}

gcodeworkshop/src/highlighter.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,11 @@ void Highlighter::loadRules()
108108
|| m_highlightMode == MODE_FANUC
109109
|| m_highlightMode == MODE_SINUMERIK
110110
|| m_highlightMode == MODE_AUTO) { // () comment
111-
commentStartExpression = QRegularExpression("\\s\\(|^\\(");
111+
commentStartExpression = QRegularExpression("[ \\t]\\(|^\\(");
112112
commentEndExpression = QRegularExpression("\\)");
113113
} else {
114-
commentStartExpression = QRegularExpression("][");
115-
commentEndExpression = QRegularExpression("][");
114+
commentStartExpression = QRegularExpression(";");
115+
commentEndExpression = QRegularExpression("$");
116116
}
117117

118118
if (m_highlightMode == MODE_FANUC
@@ -182,7 +182,7 @@ void Highlighter::loadRules()
182182
pogRule.pattern = QRegularExpression(pattern);
183183
progNameHighlightRules.append(pogRule);
184184

185-
pattern = "[A-Z]{1,1}[A-Z0-9_-]{1,}\\.(MIN|SSB|SDF|TOP|LIB|SUB|MSB)($|\\s)"; // OKUMA
185+
pattern = "[A-Z]{1,1}[A-Z0-9_-]{1,}\\.(MIN|SSB|SDF|TOP|LIB|SUB|MSB)($|[ \\t])"; // OKUMA
186186
pogRule.pattern = QRegularExpression(pattern);
187187
progNameHighlightRules.append(pogRule);
188188
}
@@ -214,7 +214,7 @@ void Highlighter::loadRules()
214214
keywords << "@[0-9]{3,3}";
215215
keywordPatterns.append(keywords);
216216

217-
pattern = "%\\b(MPF|SPF|TEA)[\\s]{0,3}[0-9]{1,4}$\\b";
217+
pattern = "%\\b(MPF|SPF|TEA)[ \\t]{0,3}[0-9]{1,4}$\\b";
218218
pogRule.pattern = QRegularExpression(pattern);
219219
progNameHighlightRules.append(pogRule);
220220
}
@@ -249,7 +249,7 @@ void Highlighter::loadRules()
249249
<< "\\b(MAX)\\b";
250250
keywordPatterns.append(keywords);
251251

252-
pattern = "(BEGIN|END)(\\sPGM\\s)[a-zA-Z0-9_-+*]{1,}(\\sMM|\\sINCH)"; // HEIDENHAIN
252+
pattern = "(BEGIN|END)([ \\t]PGM[ \\t])[a-zA-Z0-9_-+*]{1,}([ \\t]MM|[ \\t]INCH)"; // HEIDENHAIN
253253
pogRule.pattern = QRegularExpression(pattern);
254254
progNameHighlightRules.append(pogRule);
255255
}
@@ -1726,14 +1726,14 @@ void Highlighter::highlightBlockToolTipsRule(const QString& tx)
17261726

17271727
keywordFormat.setForeground(QColor(highlightColors.gColor));
17281728
keywordFormat.setFontWeight(QFont::Normal);
1729-
ruleP.pattern = QRegularExpression("(\\s-)[a-zA-Z0-9_.,://\\-+;\\s\\(\\)]{1,}");
1729+
ruleP.pattern = QRegularExpression("([ \\t]-)[a-zA-Z0-9_.,://\\-+;[ \\t]\\(\\)]{1,}");
17301730
ruleP.format = keywordFormat;
17311731
highlightRules.append(ruleP);
17321732

17331733

17341734
keywordFormat.setForeground(QColor(highlightColors.mColor));
17351735
keywordFormat.setFontWeight(QFont::Normal);
1736-
ruleP.pattern = QRegularExpression("(<b>|<i>)[a-zA-Z0-9_.@=\\[\\]\\s]{1,30}(</b>|</i>)");
1736+
ruleP.pattern = QRegularExpression("(<b>|<i>)[a-zA-Z0-9_.@=\\[\\] \\t]{1,30}(</b>|</i>)");
17371737
ruleP.format = keywordFormat;
17381738
highlightRules.append(ruleP);
17391739

@@ -1757,7 +1757,7 @@ int autoDetectHighligthMode(const QString text)
17571757
if (text.contains(
17581758
QRegularExpression("^\\$[A-Z]{1,1}[A-Z0-9_-]{1,}\\.(MIN|SSB|SDF|TOP|LIB|SUB|MSB)[%]{0,1}"))
17591759
|| text.contains(
1760-
QRegularExpression("[A-Z]{1,1}[A-Z0-9_-]{1,}\\.(MIN|SSB|SDF|TOP|LIB|SUB|MSB)($|\\s)"))) {
1760+
QRegularExpression("[A-Z]{1,1}[A-Z0-9_-]{1,}\\.(MIN|SSB|SDF|TOP|LIB|SUB|MSB)($|[ \\t])"))) {
17611761
return MODE_OKUMA;
17621762
}
17631763

@@ -1771,16 +1771,16 @@ int autoDetectHighligthMode(const QString text)
17711771
return MODE_PHILIPS;
17721772
}
17731773

1774-
if (text.contains(QRegularExpression("%\\b(MPF|SPF|TEA)[\\s]{0,3}[0-9]{1,4}\\b"))) {
1774+
if (text.contains(QRegularExpression("%\\b(MPF|SPF|TEA)[ \\t]{0,3}[0-9]{1,4}\\b"))) {
17751775
return MODE_SINUMERIK;
17761776
}
17771777

1778-
if (text.contains(QRegularExpression("%[a-zA-Z0-9_]{1,30}(\\s)"))) {
1778+
if (text.contains(QRegularExpression("%[a-zA-Z0-9_]{1,30}([ \\t])"))) {
17791779
return MODE_HEIDENHAIN_ISO;
17801780
}
17811781

17821782
if (text.contains(
1783-
QRegularExpression("(BEGIN|END)(\\sPGM\\s)[a-zA-Z0-9_-+*]{1,}(\\sMM|\\sINCH)"))) {
1783+
QRegularExpression("(BEGIN|END)([ \\t]PGM[ \\t])[a-zA-Z0-9_-+*]{1,}([ \\t]MM|[ \\t]INCH)"))) {
17841784
return MODE_HEIDENHAIN;
17851785
}
17861786

gcodeworkshop/src/setupdialog.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,8 +255,8 @@ SetupDialog::SetupDialog(QWidget* parent, const AppConfig* prop,
255255
QValidator* edtExtensionValid = new QRegularExpressionValidator(regex, this);
256256
edtExtension->setValidator(edtExtensionValid);
257257

258-
// QRegularExpression ext("(\\(|;){1,1}[\\s]{0,5}(d|dd|M|MM|YYYY)[-./]{1,1}(M|MM|d|dd)[-./]{1,1}(d|dd|M|MM|YYYY)[\\s]{1,5}(\\)){0,1}");
259-
// // (\\(;){1,1}[\\s]{0,5}(d|dd|M|MM|YYYY)[.-/]{1,1}(M|MM|d|dd)[.-/]{1,1}(d|dd|M|MM|YYYY)[\\s]{1,5}(\\)){0,1}
258+
// QRegularExpression ext("(\\(|;){1,1}[ \\t]{0,5}(d|dd|M|MM|YYYY)[-./]{1,1}(M|MM|d|dd)[-./]{1,1}(d|dd|M|MM|YYYY)[ \\t]{1,5}(\\)){0,1}");
259+
// // (\\(;){1,1}[ \\t]{0,5}(d|dd|M|MM|YYYY)[.-/]{1,1}(M|MM|d|dd)[.-/]{1,1}(d|dd|M|MM|YYYY)[ \\t]{1,5}(\\)){0,1}
260260
// ext.setCaseSensitivity(Qt::CaseSensitive);
261261
// QValidator *dateFormatValidator = new QRegExpValidator(ext, this);
262262
// dateFormatComboBox->setValidator(dateFormatValidator);

0 commit comments

Comments
 (0)