确定QT中的正则表达式匹配组

时间:2017-06-24 11:40:44

标签: c++ qt

我在QT中有一个相当大的正则表达式,它匹配多个模式......为了简化我有这个正则表达式的问题:

QRegularExpression regex = ("(?P<ZipCode>\d{5})|(?P<emailAddress>\w+@\w+\.\w+)|(?P<PhoneNumber>\d{3}\-\d{5,8})");

要匹配5位数的邮政编码,电子邮件地址或匹配此格式的电话号码:888-8888888(我没有测试过正则表达式,但它是出于示范目的,我不会&# 39;关心它是否错误。

现在我需要从字符串按顺序提取这些信息,所以我使用这段代码:

QRegularExpressionMatchIterator regexIterator = regex.globalMatch("067-839405 Junk my.email@email.com Other Junk 87494 my.email2@email.co.uk");

和一个简单的while循环。

你注意到我在我的正则表达式中命名了这些组。在while循环中,如何确定我当前正在查看的匹配项是ZipCode,电子邮件地址还是电话号码?

先谢谢

1 个答案:

答案 0 :(得分:1)

http://doc.qt.io/qt-5/qregularexpression.html#namedCaptureGroups

http://doc.qt.io/qt-5/qregularexpressionmatch.html#captured

同时遍历MAGICK_HOME字符串列表和captured(),如果namedCaptureGroups()字符串不为空,请查看captured(i)相同的指数。

希望有所帮助。