You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用QRegularExpression忽略字符串中间部分实现首尾匹配

问题解决:QRegularExpression匹配开头为settings、结尾为save的命令

你的正则表达式有两个关键错误,导致无法匹配目标字符串:

  1. 使用了\.匹配点号,但你的命令中分隔符是冒号:,且实际需要匹配任意中间内容而非特定分隔符
  2. 结尾写了_save$,多了下划线,与目标结尾save不匹配

修正后的正则与代码

如果只需满足以settings开头、以save结尾,中间任意内容(包括无中间内容的情况,比如settingssave),使用以下代码:

QString command = "settings:volume:save";
QRegularExpression regex("^settings.*save$");
if (regex.match(command).hasMatch()) {
    // 匹配成功执行的代码
}

如果需要严格匹配中间至少有一个冒号分隔(比如必须是settings:xxx:save格式,排除settingssave这类情况),可以用更精准的正则:

QRegularExpression regex("^settings:.*:save$");

正则说明

  • ^:锚定字符串开头,确保settings出现在最前面
  • .*:匹配任意数量(0个或多个)的任意字符(默认不匹配换行符)
  • $:锚定字符串结尾,确保save出现在最后面
  • 若需要匹配包含换行的命令字符串,可添加DotAllOption选项,让.匹配换行符:
    QRegularExpression regex("^settings.*save$", QRegularExpression::DotAllOption);
    

内容的提问来源于stack exchange,提问作者user2377283

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 08:23:22