我在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,电子邮件地址还是电话号码?
先谢谢
答案 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)
相同的指数。
希望有所帮助。