프로그래밍/소스 코드 에 해당하는 글109 개
2008/08/05   정규식을 써보자! (10)
2008/02/13   [How to get mouse movement history?] 마우스 이동
2008/02/12   [클립보드 복사] CopyTextToClipboard Helper Function
2007/12/30   ifstream 사용시, 한글 파일을 못 읽는 문제
2007/09/24   [DEFINE] BEGINTHREADEX 사용을 위한 디파인
2007/09/23   BeginThreadEx를 쓰기 위한 샘플
2007/05/06   [알고리즘] 가우시안 랜덤 함수
2007/05/01   ShellExecuteEx() - 파일 실행 - 기다리기~~ (1)
2007/03/27   [ODBC] ODBC로 Excel(엑셀) 파일 읽고 쓰기
2007/01/05   [MFC] OpenUrl로 html 소스 코드 얻어오기
2006/12/07   [C++]File Memory Mapping - 대용량 파일 입출력 처리
2006/12/03   [MFC] 대용량의 파일 순식간에 읽기
2006/11/28   [c++] new 메모리 할당 실패시 처리 방법
2006/11/15   [MFC] 풀 스크린으로 윈도우 생성 & 메뉴 제거
2006/11/15   [API] Rect 관련 API 함수
2006/10/16   [MFC] 클래스 기본 헤더 정리
2006/10/02   메모리릭이 걸린 부분 찾기(Memory Leaks) (1)
2006/10/02   [MFC] URL Encoding, Decoding
2006/10/02   [WTL] Visual Studio 6.0에서 설치 가능한 WTL 7.5, 8.0
2006/08/10   [SOCKET] CLOSEHANDLE,CLOSESOCKET,CLOSEEVENT,CLOSETHREAD
2006/08/10   [MFC] HINSTANCE 인스턴스 핸들 얻어오기
2006/08/10   [REG] NT계열 소켓 최대수 5000개 미만으로 설정되어 있음(서버관련)
2006/08/08   [SOCKET] KeepAlive를 이용해서 TCP/IP 연결 주기적으로 확인하기
2006/08/01   [C++] min, max를 이용한 최대값 최소값 범위 제한하기
2006/07/25   CArray 를 qsort 함수를 이용하여 쉽게정렬하는 템플릿
2006/07/17   MYTRACE를 이용한 Debugging Log 만들기
2006/07/17   pragma message 이용해서 해야할 일 관리하는 법
2006/07/02   [VC] 비주얼 스튜디오 6.0에서 UNICODE 컴파일 모드 추가하기 (2)
2006/05/14   [TCP] recv Helper 함수(버퍼 크기만큼 받을때까지..)
2006/05/14   [MFC] ASSERT 사용법(인자 체크 방법)
2006/05/14   [MFC] TRACE log 파일
2006/05/14   [MFC] CTypedPtrList, CTypedPtrMap
2006/05/14   [API] API를 이용하는 유니코드와 ANSI 문자열간의 변환 방법
2006/05/14   [MFC] 유니코드와 ANSI 문자열간의 타입 변환 방법
2006/05/14   [MFC] GDI+ 이미지 그리기
2006/05/14   [MFC] CWaitCursor 커서 모래시계로 만들기
2006/05/14   [MFC] while 무한루프시 메시지 처리, YieldMessage()
2006/05/14   [MFC] CWnd 한글 번역 자료
2006/05/14   [MFC] Shell을 이용한 복사
2006/05/14   [알고리즘] 해쉬 키 알고리즘
2006/05/14   [VC++] 클립보드에 텍스트 복사 하기
2006/05/14   [C] printxy() gotoxy와 printf 중복 정의
2006/05/14   [C] gotoxy와 printf 중복 정의
2006/05/14   [VC++] DrawBitmap 비트맵 그리기
2006/05/14   [VC++] SetClientRect 클라이언트 영역 초기화
2006/05/14   [VC++] 윈도우 핸들을 받아서 클라이언트 중앙으로 이동
2006/05/14   [매크로] 1차원 배열 크기 구하는 매크로
2006/05/14   [C + WIN32] win32를 이용한 파일 복사
2006/05/14   [C] C 라이브러리를 이용한 파일 복사
2006/05/14   [C++] putch와 va_list를 이용한 myprintf 함수
2006/05/13   [C++] INT_MAX(LIMIT.h) 정의된 헤더 파일
2006/05/13   [MFC] Edit 컨트롤에서 클립보드로 복사하기
2006/05/13   [MFC] 다이얼로그에서 F1 작동 안하게 하기
2006/05/13   [VC++] 키 눌림 상태 판단(GetAsyncKeyState)
2006/05/13   [C] 메모리 leak 정보 확인하기 위한 헤더 소스
2006/05/13   [C] 정적 배열 할당 [600] * [600] 이 안되는 이유
2006/05/13   [C++] static 변수의 최대값이 넘어갔을때
2006/05/13   [C] 에러 출력 매크로(에러난 파일이름, LINE 정보 출력)
2006/05/13   [C] 함수 포인터를 이용하여 명령어 조건 분기 처리
2006/05/13   [VC++] EDIT 박스에 LIST 박스처럼 메시지 출력하기
2006/05/13   [C++] 포인터를 정확히 이해하기 위한 간단한 예제
2006/05/13   [C++] fstream을 이용한 파일 입출력
2006/05/13   [C++] 구조체 크기 조정( pragma pack )
2006/05/13   [C++] iostream.h와 iostream의 차이점 (1)
2006/05/13   [C++] virtual 가상함수
2006/05/13   [C++] Class 가장 기본적인 코딩
2006/05/13   [MFC] OpenUrl을 이용하여 http소스 읽기
2006/05/13   [C++] malloc를 이용한 동적 메모리 할당 예제
2006/05/13   [VC++] 프로그램의 현재 경로명 구하기
2006/05/13   [MFC] CWND 와 HWND 변환 방법
2006/05/13   [VC++] 윈도우 OS 구별하는 소스
2006/05/13   [VC++] windir systemroot 경로 구하기(shell 쉘 프로그래밍)
2006/05/13   [VC++] 전체 파일 경로에서 파일명 제거
2006/05/13   [VC++] 트레이 아이콘 만들기
2006/05/13   [VC++] 윈도우 중복실행 방지 코드(Mutex)
2006/05/13   [VC++] 윈도우 실행시 자동 실행[Registry]
2006/05/13   [VC++] 윈도우 다이얼로그 Skeleton 소스
2006/05/13   [SOCKET] TTF Telnet 서버 프로그램
2006/05/13   [API] ShellExecute를 이용해서 cmd 명령 수행하기
2006/05/13   [헤더파일] winsock2.h 필요부분 추출
2006/05/13   [C, C++] enum 변수를 함수로 넘겨주기
2006/05/13   [MFC] 다이얼로그를 전체화면 만들기
2006/05/13   [MFC] 임의의 클래스 포인터 얻기(SDI)
2006/05/13   [MFC] 스레드를 생성하는 방법
2006/05/13   [MFC] 스레드의 진행_종료 상태를 확인하는 방법
2006/05/13   [MFC] Enable, Disable 하기
2006/05/13   [MFC] MFC에서 hWnd와 hinst 얻어오기
2006/05/13   [GVM] 모바일 실습 프로그램
2006/05/13   [GVM] 모바일 실습 프로그램
2006/05/13   [MFC] CString -> char 로 바꾸는 방법
2006/05/13   [ASM] C 에서 어셈블리 작성 (assembly)
2006/05/13   [MFC] 파일 입출력
2006/05/13   [MFC] 시리얼 생성 프로그램(Keygen)
2006/05/13   [C] 함수에서 다차원 배열 사용하기(함수에 배열 인자 넘기기)
2006/05/13   [C] 프로그램 수행 속도 측정(동작 시간 측정)
2006/05/13   [알고리즘]퀵 정렬(quick sort)
2006/05/13   [MFC] edit 컨트롤에서 text 관리하기
2006/05/13   [MFC] 버튼 컨트롤을 enable, disable 하기
2006/05/13   [MFC]컨트롤 박스(Control Box)를 이용하여 타이틀 메시지 바꾸기
2006/05/13   [MFC] CString += 연산자 에러가 날 경우
2006/05/13   [MFC] 오른쪽 버튼으로 빠른 메뉴 구성하기
2006/05/13   [VC++] Messageprintf를 이용해서 화면 크기 출력하기
2006/05/13   [함수] 곱하기(쉬프트연산을 이용한 곱하기) Booth 알고리즘
2006/05/13   #define is_numeric(x) 입력 값이 숫자일때 반환하는 매크로 정의
2006/05/13   #define abs(x) 절대값을 매크로 정의로 사용하기
2006/05/13   #define randomize()
2006/05/13   #define 대문자 소문자 변환 매크로 (2)
2006/05/13   [템플릿] #define max(a,b) min(a,b)
2006/05/13   [win32] winnt.h에 정의된 에러 코드


정규식을 써보자!
프로그래밍/소스 코드 | 2008/08/05 02:07

정규식을 설명하기 위해서 한가지 예를 들기로 한다.(http://www.npteam.net)

^ht{2}p:(/{2})w{3}(.)(n.{0,10})(?:com|net|(co.kr))
  1. 문장의 처음은 h로 시작한다.
  2. "t"글자가 연속 2번 출력된다.
  3. "p:" 가 출력된다.
  4. "/"가 연속 2번 출력된다.
  5. "w"가 연속 3번 출력된다.
  6. 아무글자 1글자를 그대로 출력한다.
  7. n으로 시작해서 최소 0에서 최대 10글자까지 아무글자나 출력한다.
  8. 맨 뒤에 종결 문자는 "com", "net", "co.kr" 3가지중 하나라도 만족하면 출력한다.
윈도우에서 모든것을 표현하는 *문자는 ".*"로 사용가능하다.

따라서 위의 정규식으로 출력되는 결과를 찾으면 다음과 같이 출력된다.


이 수식을 이용해서 VBScript에서 이용하려면 다음의 샘플 코드를 사용하시면 됩니다.

■ 정규식에 의해서 일치하는 문장이 있는지 없는지 판단하는 스크립트
Dim objRegExp
Set objRegExp = New RegExp
objRegExp.MultiLine = True
objRegExp.Pattern = "^ht{2}p:(/{2})w{3}(.)(n.{0,10})(?:com|net|(co.kr))"
 
SubjectString = "http://www.npteam.net"
 
If objRegExp.Test(SubjectString) Then
  ' Successful match
  MsgBox "Success"
Else
  ' Match attempt failed
  MsgBox "Failed"
End If


■ 정규식에 의해서 일치하는 문장을 리턴받고 싶을 경우
Dim ObjRegExp, MatchWords, ResultString
Set ObjRegExp = New RegExp
ObjRegExp.MultiLine = True
ObjRegExp.Pattern = "^ht{2}p:(/{2})w{3}(.)(n.{0,10})(?:com|net|(co.kr))"
 
SubjectString = "http://www.npteam.net"
 
Set MatchWords = ObjRegExp.Execute(SubjectString)
If MatchWords.Count >= 1 Then
  ResultString = MatchWords(0).Value
Else
  ResultString = "Nothing"
End If
 
MsgBox ResultString


이해를 돕기 위해 샘플 정규식을 한가지 소개하고자 한다.

■ 숫자 000 ~ 255
^([01][0-9][0-9]|2[0-4][0-9]|25[0-5])$
  1. 첫번째 자리의 숫자 (0, 1), 두번째 자리 숫자(0~9), 세번째 자리 숫자(0~9)
  2. 첫번째 자리의 숫자(2), 두번째 자리 숫자(0~4), 세번째 자리 숫자(0~9)
  3. 첫번째 자리의 숫자(2), 두번째 자리의 숫자(5), 세번째 자리의 숫자(0~5)

결국 각각 다음과 같은 범위를 제한하고 있다.

000 ~ 199, 200 ~ 249, 250 ~ 255

왜 이렇게 3단계로 분류해야 할까?
정규식은 숫자를 정수로 판단하는 것이 아니라 각각 하나의 문자로 판단하기 때문이다.
따라서 문자가 올 수 있는 범위를 세부적으로 제한함으로써 위와 같은 결과를 얻을 수 있다.

이외에도 정규식을 활용하면 수 많은 표현을 아주 간결하게 찾아낼 수 있다.

 
TTF 2008/08/05 03:04
http://www.regexbuddy.com/
정규식 검사하는 프로그램
TTF 2008/08/05 03:08
http://technet.microsoft.com/ko-kr/magazine/cc137729.aspx
마소 TechNet에 실린 정규식 관련 글
won 2008/08/05 09:31
http://weitz.de/regex-coach/
하루 2008/08/15 15:39
TTF 바쁘냐? 오늘 전화하니 안받드만 8월 18일날 서버 IDC 옴겨서 새벽부터 아침까지 접속 안될꺼거든 (미리 빽업받아놓는거도 좋구 ㅋㅋ) 일단 그리알고잇어
TTF 2008/08/15 23:02
ㅎㅎ 서버 통합 프로시저 작업하고 야근해서,
늦게까지 잠들었어요. 일어나니까 오후 2시 ㅎㅎ
indra 2008/08/19 00:37
하루 바쁘냐., 얼굴도 안보이더라.,.,ttf 마찬가지,,ㅡㅡㅋ
Rosso 2008/08/21 22:30
바쁜가 보군 ttf형
TTF 2008/08/24 13:24
요즘 개인적으로 힘든일만 계속 겹치고 있어서 개인 시간이 없어요. 마치 고등학교 3학년으로 되돌아간 느낌.
새벽 4시에 자고 9시에 출근하고...
뭔가 이건 아닌데, 내 인생은 왜 이러지 하면서도 열심히 살려는 마음으로 포기하지 않고 최선을 다하고 있어요.
푸른~~~ 2008/08/26 13:25
흠 여기에 댓글진행중...
겁나게 바쁘게 사는가보군..
나는 2단계 공항 오픈하고 교대근무시작해서 요즘 시간이 조금 남는 분위기 인데...
TTF 2008/08/30 09:44
http://www.codeproject.com/KB/tips/Regular_Expressions.aspx
Name
Password
Homepage
  Secret
Description
 

BLOG main image
전체 (357)
Project (7)
TTF 강좌 (21)
Tip&Tech (57)
프로그래밍 (146)
DATABASE (9)
자료실 (103)
디아블로2 (2)
TTF 개인.. (11)
영어 관련 (0)
<<   2008/11   >>
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
2008/10
2008/09
2008/08
2008/07
2008/06
관리자만 볼..
    11/06 -
관리자만 볼..
    10/06 -
관리자만 볼..
    10/02 -
http://supp..
    09/30 - TTF
감사합니다...
    09/26 - 이상곤
VC6에서 UNI..
    2006 - HaruSchool
ActiveX 상..
ADODB, OLED..
bootflashdo..
CD 없이 게..
CNX 17기 썽..
code2dive ..
CodeProject..
codeway - ..
ColorSchemes
cpueblo's b..
Crystal Flo..
C프로그래밍..
DataBaser.net
DB 디자인 ..
DirectX 9.0..
Dual - 네이..
Dual - 홈페..
DVD인포 국..
Encoding, D..
FastDelegate
guru 3d(최..
http 파일 ..
IBM UML링크
INF, WMI, V..
Inxzone - ..
MFC 관련 네..
MFC 기초 강..
MFC 유용한 ..
MFC 컨트롤 ..
MS 다운로드..
MSDN shell ..
MSDN 공용 ..
Mysql DB 디..
Naughter의 ..
POSA2 DEVPI..
SQL Compact
SVN NOTIFY
TCP 레지스..
Time4Crime(..
UML Case To..
UML 관련 정..
vc++ 소스와..
vivaman - ..
Win32 Debug..
winapi - AP..
xlsvba 카페
XType님의 ..
yoda의 홈페..
가상 플로피..
구글번역(영..
구글번역(한..
김상욱 개발..
김태형님 블..
꿀뷰
네이버 지하..
대한민국 법..
디버거 툴 ..
디버그 랩
디스어셈블..
마소 TechNet
망사2 PC방 ..
메뉴얼 언패..
미디어 컨버트
버그 리포트..
비스무리(송..
비주얼 베이..
서울시 버스..
서울시교통..
스프링노트
시디 커버 ..
시디알인포 ..
신용우님 FP..
신화방송국
싸미월드
안준석님 블..
알고리즘 심..
언패킹 강좌..
여리의 작업실
영어 듣기 ..
온라인 게임..
윈도우 프로..
유경상의 닷..
인크레디빌드
자바스크립..
전자 부품 ..
전화번호로 ..
정명수님 블..
정보보안연..
지니네 - 네..
지니야 홈페..
찬희와 희야
최흥배님 카..
카페 24 - ..
커플이님의 ..
클래스 뷰 ..
통계 정보 ..
통합전자민..
프로젝트 관리
한국 TOC 컨..
한국전산원 ..
해외거주 한..
휘슬러 사용..
180
12
104073
태터툴즈 배너