【问题标题】:With QT validate and split string with regex使用 QT 验证并使用正则表达式拆分字符串
【发布时间】:2015-06-03 20:44:45
【问题描述】:

我有以下字符串模式:

(code)Name

代码应该是两个字母并命名任何字符串。

我可以在不使用正则表达式的情况下验证和分隔字符串:

if ((code.indexOf("(") < 0) || (code.indexOf(")") < 0) )
{
  log("Malformed default code");
  return 1;
}
else
{
  QStringList parts = code.split(")",QString::SkipEmptyParts);
  parts[0] = parts[0].replace("(","");

  qDebug() << parts[0];
  qDebug() << parts[1];
}

如何使用正则表达式验证此模式并在单独的变量中获取代码和名称?

【问题讨论】:

    标签: regex qt


    【解决方案1】:

    您需要的正则表达式是 \(([a-zA-Z]{2})\)(.*)(如果您只接受字母)或 \((\w{2})\)(.*)(如果您也可以使用数字和下划线)。然后相应的代码是

    QString str("(AB)something");
    QRegExp reEngLetterOnly("\\(([a-zA-Z]{2})\\)(.*)");
    if (reEngLetterOnly.indexIn(str) == -1)
    {
        log("Malformed default code");
        return 1;
    }
    QString code = reEngLetterOnly.cap(1);
    QString name = reEngLetterOnly.cap(2);
    

    QString str("(_C)something");
    QRegExp reAlnum("\\((\\w{2})\\)(.*)");
    if (reAlnum.indexIn(str) == -1)
    {
        log("Malformed default code");
        return 1;
    }
    QString code = reAlnum.cap(1);
    QString name = reAlnum.cap(2);
    

    【讨论】:

      猜你喜欢
      • 2017-02-23
      相关资源
      最近更新 更多