#include <iostream>
#include <regex>
#include <string>
int main( int argc, char * argv[ ] ) {
std:: regex base_regex( "[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\ .[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\\ .)+[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?" ) ;
for ( const auto & s : { "email@subdomain.domain.com" ,
"Invalid email@subdomain.domain.com" ,
"a@c.c.c.ccb.c" ,
"a@c.c.cc.ccb.c" ,
"a@c.cc.c.ccb.c" ,
"a@cc.c.c.ccb.c"
} )
{
std:: cout << s << " : " << ( std:: regex_match ( s, base_regex) ? "Found" : "Not found" ) << std:: endl ;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8cmVnZXg+CiNpbmNsdWRlIDxzdHJpbmc+CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CiAgICBzdGQ6OnJlZ2V4IGJhc2VfcmVnZXgoIltBLVphLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSsoPzpcXC5bQS1aYS16MC05ISMkJSYnKisvPT9eX2B7fH1+LV0rKSpAKD86W0EtWmEtejAtOV0oPzpbQS1aYS16MC05LV0qW0EtWmEtejAtOV0pP1xcLikrW0EtWmEtejAtOV0oPzpbQS1aYS16MC05LV0qW0EtWmEtejAtOV0pPyIpOwogICAgCiAgICBmb3IgKGNvbnN0IGF1dG8mIHMgOiB7ImVtYWlsQHN1YmRvbWFpbi5kb21haW4uY29tIiwKCQkJCQkgICAgICJJbnZhbGlkIGVtYWlsQHN1YmRvbWFpbi5kb21haW4uY29tIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJhQGMuYy5jLmNjYi5jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJhQGMuYy5jYy5jY2IuYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYUBjLmNjLmMuY2NiLmMiLAogICAgICAgICAgICAgICAgICAgICAgICAgImFAY2MuYy5jLmNjYi5jIgogICAgfSkKICAgIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgcyA8PCAiIDogIiA8PCAoc3RkOjpyZWdleF9tYXRjaChzLCBiYXNlX3JlZ2V4KSA/ICJGb3VuZCIgOiAiTm90IGZvdW5kIikgPDwgc3RkOjplbmRsOwogICAgfQoKfQ==