设计背景
部分网页正则表达式测试工具,输入$匹配符会卡死,决定自己实现一个
界面设计
关键代码
void RegexpDialog::on_edt_regx_textChanged(const QString &pattern)
{
auto text = ui->edt_content->text();
QRegularExpression regxp(pattern);
// 查找所有匹配项
QRegularExpressionMatchIterator matches = regxp.globalMatch(text);
QStringList matchTexts;
while (matches.hasNext()) {
QRegularExpressionMatch match = matches.next();
if(match.hasMatch()) {
matchTexts << match.capturedTexts();
}
}
auto listModel = (QStringListModel*)ui->lst_match->model();
listModel->setStringList(matchTexts);
}
参考
正则表达式在线测试 | 菜鸟工具