使用QT验证并使用正则表达式拆分字符串

时间:2015-06-03 12:22:07

标签: regex qt

我有以下字符串模式:

(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];
}

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

1 个答案:

答案 0 :(得分: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);