<div>프로그래밍 게시판이 생겼으니, 그냥 아무 글이나 싸질러 봅니다ㅋ</div> <div><br /></div> <div>저는 얼마 전 개발 회사에 인턴으로 들어갔습니다. 이전에는 무역 회사의 개발자였지만, 미래를 위해 이직했습니다. 연봉 마이너스 천 이상....ㅠㅠ</div> <div><br /></div>어쨌든 여기 와서 동기 인턴들과 참 여러 가지 과제를 부여 받았습니다. <strike>(지금도 과제해야 되는데 하기 싫어서 글쓰는 건 안 자랑...)</strike> <div><br /></div> <div>그 중에는 정규표현식을 쓰면 간단한 과제들도 있었지요. <span style="font-size: 9pt; line-height: 1.5">그런데 다들 정규표현식을 어려워 하더라고요.</span></div> <div> <div><br /></div> <div>정규표현식은 여러 곳에 많이 쓰입니다. 꼭 배워 두시면 인생이 편해져요ㅋ</div></div> <div><br /></div> <div>몇 가지만 알면 금방 익힐 수 있습니다.</div> <div><br /></div> <div><br /></div> <div>기본 개념: 문자열에서 특정 패턴을 찾아낸다!</div> <div><br /></div> <div>^ : 문자열의 시작</div> <div>$ : 문자열의 끝</div> <div>() : 그룹</div> <div>[] : 패턴</div> <div>+ : 한 개 이상 존재</div> <div>* : 0개 이상 존재</div> <div>? : 있거나 없거나</div> <div>{m,n} : m개 이상, n개 이하 존재</div> <div>{n} : n개가 존재</div> <div>{m,} : m개 이상 존재</div> <div>. : 모든 문자</div> <div>\\ : 이스케이프 (위의 특별한 의미가 있는 것들을 그냥 문자로 쓸 때 씀. ex) \\. : 모든 문자가 아닌 점 한 개 )</div> <div><br /></div> <div>이 정도만 알면 됩니다. 프로그래밍 언어별로 조금씩 다른 게 있기도 하지만 별반 차이가 없습니다.</div> <div><br /></div> <div>아래는 응용...</div> <div><br /></div> <div>[A-Z] : 대문자 알파벳 1개</div> <div>[A-Z]+ : 대문자 알파벳 1개 이상</div> <div>[A-Z]* : 대문자 알파벳 0개 이상</div> <div>[A-Z]? : 대문자 알파벳 1개가 있거나 없거나</div> <div>[A-Z]{2,3} : 대문자 알파벳이 2개나 3개</div> <div>[A-Z]{2,5} : 대문자 알파벳이 2개나 3개나 4개나 5개</div> <div><br /></div> <div>[A-Za-z0-9] : 대문자/소문자 알파벳이나 숫자가 1개</div> <div>[A-Za-z0-9-_] : 대문자/소문자 알파벳이나 숫자나 -(대시)나 _(언더바)가 1개</div> <div><br /></div> <div>^[A-Z]+$ : 대문자 알파벳으로만 이루어진 문자열</div> <div>^abc : abc로 시작하는 문자열</div> <div>abc$ : abc로 끝나는 문자열</div> <div>^.....$ : 아무 문자나 5개가 있는 문자열</div> <div>^(.*)$ : 아무 문자나 0개 이상 있는 문자열</div> <div>^(.+)$ : 아무 문자가 1개 이상 있는 문자열</div> <div><br /></div> <div>^[A-Za-z0-9-_]+@[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+(\\.<span style="font-size: 9pt; line-height: 1.5">[A-Za-z0-9-_]+)*$ : 간단한 이메일 주소 패턴</span></div> <div><span style="font-size: 9pt; line-height: 1.5"><br /></span></div> <div>위 이메일 패턴을 잘라보면 아래와 같습니다.</div> <div><br /></div> <div>^ : 문자열의 시작</div> <div>[A-Za-z0-9-_]+ : 아이디 부분</div> <div>@ : 골뱅이가 1개</div> <div>[A-Za-z0-9-_]+ : 도메인 앞부분 (todayhumor.co.kr의 todayhumor 부분)</div> <div>\\. : 점이 1개</div> <div>[A-Za-z0-9-_]+ : 도메인 뒷부분 (todayhumor.co.kr의 co부분)</div> <div>( : 여기부터 그룹으로 묶음</div> <div>\\. : 점이 1개</div> <div>[A-Za-z0-9-_]+ : 도메인 뒷부분 (todayhumor.co.kr의 kr 부분)</div> <div>)* : 여기까지 그룹으로 묶는데, 이 그룹은 0개 이상 존재함</div> <div>$ : 문자열의 끝</div> <div><br /></div> <div>kr 부분을 그룹으로 묶어서 표현한 것은 .com, .net, .org 처럼 kr부분이 없는 도메인이 있기 때문입니다.</div> <div><br /></div> <div><br /></div> <div>-------------------------</div> <div>흠... 아무도 안 궁금해 하는 뻘글 쓰다보니 과제 해야겠다는 생각이 드네요 ~_~</div> <div>모두 안녕~</div>