사용언어 lex
첫번째 단계
%%
[\n\t ]+ ;
[a-zA-Z] { printf("%s ", yytext); }
%%
두번째 단계.
결국 생각을 해보니 이것 역시 FSA 라서 그저 lex 로도 해결 된다는 깨우침을 얻었음.
letter [-_0-9A-Za-z]
mailname {letter}({letter}|\.)*{letter}
domain_name [0-9A-Za-z][-0-9A-Za-z]*[0-9A-Za-z]
last_domain com|net|co\.kr
mail_address {mailname}@({domain_name}\.)+{last_domain}
%%
[ \t\n] ;
{mail_address} { printf("true.\n"); }
.+ { printf("false.\n"); }
%%
메일주소 규칙 : 영어대소문자 숫자 하이픈 언더바 '.' 사용 가능. 단 '.' 은 시작과 끝에 지정 불가. 2자 이상.
도메인 네임 규칙 : 영어대소문자 숫자 하이픈 사용가능. 단 하이픈은 시작과 끝에 지정 불가. 2자 이상.
co.co.kr 이 도메인은 적법한거 같아서 별 문제 없을거 같다.
실행 예..
zennith@zeropage:~/work/lexandyacc$ ./mailscanner
asdflkhas@asdlghas.asdfkhasd.asdkjghasdf.com
true.
----__--__....asdflkhasd.asdlkh@asd--asdg.co.kr
true.
.asdf@asgdlkh_as.comm
false.
----
토이 토이/메일주소셀렉터