首页 > 解决方案 > Qt6 中的端口 QRegExp::exactMatch()

问题描述

我正在将 Qt5 应用程序移植到 Qt6。我想尽快离开 Qt6 的 Qt5CoreCompat 模块。我的问题是QRegExp应该用类替换的QRegularExpression类。大多数补丁都相对微不足道,但我如何QRegExp::exactMatch()在 Qt6 中移植。这是应用程序中的一些代码:

QRegExp version(QLatin1String("(.+)_v(\\d+)"));
if (version.exactMatch(completeBaseName/*QString*/))
{
        // some code
}

我看不到在QRegularExpressionMatch课堂上这样做的方法。我想解决方案可能是这样的:

QRegularExpression version(QLatin1String("(.+)_v(\\d+)"));
QRegularExpressionMatch match = version.match(completeBaseName);
if (match.hasMatch())
{
        // Find exact match or not
}

我想要和以前一样的行为。

标签: c++qtqt6

解决方案


该文档建议使用anchoredPattern辅助函数从正则表达式本身进行锚定:

QRegularExpression version(QRegularExression::anchoredPattern(QLatin1String("(.+)_v(\\d+)")));

推荐阅读