用于排除某些特定字符的正则表达式

时间:2017-03-15 10:05:54

标签: qregularexpression

我正在尝试在Qt中为以下字符串集构建一个正则表达式:

该集可以包含长度为1的所有字符串集,其中不包括rz

该集还包括一组长度大于1的字符串,以z开头,后跟任意数量的z's,但必须以单个字符终止rz

到目前为止,我已经开发了以下内容:

[a-qs-y]?|z+[a-qs-y]

但它不起作用。任何见解都将不胜感激。

1 个答案:

答案 0 :(得分:0)

正则表达式中的问号导致第一个替代方法匹配长度为1的小写字符串,不包括r和z或空字符串,并且由于空字符串可以在任何字符串中匹配,因此第二个替代方案将永远不会匹配反对。正则表达式的其余部分符合您的规范,但您可能希望通过锚定它来使正则表达式仅匹配整个字符串:

QRegularExpression re("^[a-qs-y]$|^z+[a-qs-y]$");
QRegularExpressionMatch match = re.match("zzza");
if (match.hasMatch()) {
    QString matched = match.captured(0);
    // ...
}