regex - 在Qt中,用最少的代码量用正则表达式捕获替换字符串匹配是什么?

标签 regex qt qregularexpression

我希望QString允许这样做:

QString myString("School is LameCoolLame and LameRadLame");
myString.replace(QRegularExpression("Lame(.+?)Lame"),"\1");


离开

"School is Cool and Rad"


与其从我在文档中所看到的相反,这需要您(从文档中)去做,这更加令人费解:

QRegularExpression re("\\d\\d \\w+");
QRegularExpressionMatch match = re.match("abc123 def");
if (match.hasMatch()) {
    QString matched = match.captured(0); // matched == "23 def"
    // ...
}


或者在我的情况下是这样的:

QString myString("School is LameCoolLame and LameRadLame");
QRegularExpression re("Lame(.+?)Lame");
QRegularExpressionMatch match = re.match(myString);
if (match.hasMatch()) {
    for (int i = 0; i < myString.count(re); i++) {
        QString newString(match.captured(i));
        myString.replace(myString.indexOf(re),re.pattern().size, match.captured(i));
    }
}


而且那似乎还行不通,(我实际上放弃了)。必须有一个更简单,更方便的方法。为了简化和提高代码的可读性,我想知道使用最少代码行来完成此操作的方法。

谢谢。

最佳答案

QString myString("School is LameCoolLame and LameRadLame");
myString.replace(QRegularExpression("Lame(.+?)Lame"),"\\1");


上面的代码按预期工作。在您的版本中,您忘记了转义字符本身。

关于regex - 在Qt中,用最少的代码量用正则表达式捕获替换字符串匹配是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33669234/

相关文章:

c++ - Qt MySQL - 创建新表

c++ - 获取 QStringList 的前一个元素

qt - 如何使用自定义(不可编辑)委托(delegate)创建模型/ View TableView?

python - PyQt5:如何使用 QRegularExpression 进行替换

c++ - 使用 QRegularExpression 提取完整的句子

MySql REGEXP 运算符

python - 为什么这个字符串匹配正则表达式?

java - 正则表达式匹配多行括号中的文本

c# - 正则表达式捕获组