CAtlRegExp 일치 이메일 주소

5340 단어 RegExp

Lua 안은 비교적 강해서 줄곧 여러 개와 일치한다.
t = {}



for name,domain in string.gmatch(s,"([-%a%d%._]+)@([-%a%d.]+)") do

    -- Really no need to split and rejoin the email address

    -- it was a part of the demonstration.

    fulladdy = name .. "@" .. domain

    msgbox(fulladdy,'');

end

 
CAtl Regexp는 한 번에 한 개만 일치하는 것 같습니다. 여러 개는 지원될지 안 될지 모릅니다.
#include "stdafx.h"

#include <atlrx.h>

#include <atlstr.h>





int _tmain(int argc, _TCHAR* argv[])

{

    CString strText = 

        " [email protected] "

        "asdfasdf@a0"

        "3JDASDFG@.*)"

        "2012-06-05 16:37:18 "

        "[email protected] ~~"

        " [email protected]";



    CAtlRegExp<> reUrl;

    CAtlREMatchContext<> mcUrl;



    CString strRex = "{[0-9a-z\\_\\.\\-]+@[0-9a-z\\_\\.\\-]+}";    //\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*



    REParseError status = reUrl.Parse(strRex);

    if ( REPARSE_ERROR_OK != status ) {

        // Unexpected error.

        return 0;

    }



    const CAtlREMatchContext<>::RECHAR* szStart = 0;

    const CAtlREMatchContext<>::RECHAR* szEnd = strText;



    while ( TRUE ){

        if ( !reUrl.Match( szEnd, &mcUrl) ) {

            break;

        }



        if (  mcUrl.m_uNumGroups==0 ){

            break;

        }



        for (UINT nGroupIndex = 0; nGroupIndex < mcUrl.m_uNumGroups; ++nGroupIndex) {

            

            mcUrl.GetMatch(nGroupIndex, &szStart, &szEnd);



            ptrdiff_t nLength = szEnd - szStart;

            printf("%d: %.*s
", nGroupIndex, nLength, szStart); }//end for }//end while return 0; }

 

좋은 웹페이지 즐겨찾기