-1

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

该集合可以包含长度为 1 且不包括r和的所有字符串集合z

该集合还包括长度大于 的字符串集合,这些字符串以1开头z,后跟任意数量的字符串,但必须以不为和z's的单个字符结尾rz

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

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

但它不起作用。

4

1 回答 1

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);
    // ...
}
于 2017-03-15T13:45:17.550 回答