我有以下字符串模式:
(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];
}
如何使用正则表达式验证此模式并将代码和名称放在单独的变量中?
答案 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);