C++ QSyntaxHighlighter的QRegExp和双引号文本
QRegExp模式用于捕获QSyntaxHighlighter的引用文本是什么 测试模式 “一”或“二”或“三” 到目前为止,我已经尝试:C++ QSyntaxHighlighter的QRegExp和双引号文本,c++,regex,qt,qregexp,C++,Regex,Qt,Qregexp,QRegExp模式用于捕获QSyntaxHighlighter的引用文本是什么 测试模式 “一”或“二”或“三” 到目前为止,我已经尝试: QRegExp rx("\\0042.*\\0042"); QRegExp rx("(\\0042).*?\\1"); 最后一个模式在regexpal.com上成功,但在QRegExp类中不成功。编辑:如果您签出,则其中已包含此模式 只需从Qt的highlighter示例中复制大部分代码,就可以进行设置 贪婪的,贪婪的。QRegEx中的惰性匹配 在Reg
QRegExp rx("\\0042.*\\0042");
QRegExp rx("(\\0042).*?\\1");
最后一个模式在regexpal.com上成功,但在QRegExp类中不成功。编辑:如果您签出,则其中已包含此模式 只需从Qt的highlighter示例中复制大部分代码,就可以进行设置 贪婪的,贪婪的。QRegEx中的惰性匹配 在RegEx上Qt变化的描述中,它说: 注意:量词通常是“贪婪的”。它们总是尽可能多地匹配文本。例如,0+匹配它找到的第一个零以及第一个零之后的所有连续零。应用于“20005”,它与“20005”匹配。量词可以设置为非贪婪的,请参见setMinimal() 如果您使用
setMinimal(true)
来获得惰性匹配而不是贪婪匹配的效果,那么您可以实现它。其他正则表达式计算器使用类似于*?
或+?
的方法来执行延迟匹配。有时我用它来测试我的表情
下面是您正在查找的代码。这在很大程度上是基于给出的例子
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
qcorea应用程序(argc、argv);
QString str=““一”或“二”或“三”;
QRegExp rx(“\”*\”);
rx.setMinimal(真);
整数计数=0;
int pos=0;
而((位置=rx.indexIn(str,pos))!=-1){
++计数;
pos+=rx.matchedLength();
qDebug()带引号还是不带引号?匹配项应包括引号。
quotationFormat.setForeground(Qt::darkGreen);
rule.pattern = QRegExp("\".*\"");
rule.format = quotationFormat;
highlightingRules.append(rule);
#include <QCoreApplication>
#include <QRegExp>
#include <QDebug>
#include <QStringList>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString str = "\"one\" or \"two\" or \"three\"";
QRegExp rx("\".*\"");
rx.setMinimal(true);
int count = 0;
int pos = 0;
while ((pos = rx.indexIn(str, pos)) != -1) {
++count;
pos += rx.matchedLength();
qDebug() << rx.cap();
}
return a.exec();
}