>> Read Reply from No. 27545 article  
RE: 정규식좀 갈켜주세요

등록 2001-04-18 04:47:00     조회 2
이름 김점산    

		: 자료가 이렇게 있거든요.
:
: 1,2(요기가 첫번째 공백)어쩌구 저쩌구
: 1,3(공백)어쩌구 저쩌구
:
: 이렇게 나가는데..
: 혹시 첫번째 공백만 ,로 대치할 수 없을까요??
: 도움을 바랍니다.
 -----------------------------------
 [ 정규 표현식에 대해 알아보자 (1) ]
 정규 표현식은 어떤 문자 패턴을 찾아서 수정 및 교환등 웹프로그램 개발시 정교한 문자 
처리를 가능하게 해준다. 그럼 정규 표현식의 사용법에 대하여 알아 보자.
 첫번째는 기본적인 기호들에 대하여 알아 보겠다.
 정규 표현식 기본 문법
 '^' 와 '$'
 '^' 는 바로 문자뒤의 문자열로 시작 됨을 가르킨다.
"^The" : 는 "The"로 시작 하는 문자를 말한다. ex) The Car is red, Theater...
 '$' 는 문자열의 맨 마지막을 가르킨다.
"of despair$" : 는 "of despair"로 끝나는 문자열이다. ex) The concept of despair
 "^hello$" : 는 hello로 시작해 hello로 끝나는 경우 이므로 "hello" 뿐이다.
  '.', '*' 와 '+' 그리고 '?'
  '.' 은 어떤 문자든지 임의의 한문자를 말한다.꼭 하나의 문자가 있어야 한다.
ex) "x.z" 는 xyz, xxz, xbz 등이고 xz난 xyyz는 안된다.
 '*' 는 바로 앞의 문자가 없거나 하나 이상의 경우를 말한다.
ex) "ab*" 는 a, abc, ab, abbbb 등을 말한다.
 '+' 는 바로 앞의 문자를 나타내면 꼭 1나 이상이어야 한다.
ex) "ab+" 는 abc, abbb 등이고 a는 되지 않는다.
 '?' 는 바로 앞의 한문자가 있거나 없는것을 말한다. 단지 한문자 만이어야 한다.
ex) "ab?" 는 a 또는 ab 를 나타낸다.
  <>, {} 와 () 그리고 |
  '<>' 는 <> 안에 존재하는 문자들중 한 문자만을 나타낸다.
ex) [abc] 는 a 또는 b 또는 c 중에 한문자를 나타낸다. 여기서 '-'를 사용할땐 범위를 나타낸다
. 즉 [ a-f ] 는 [abcdf] 와 같은것을 나타낸다.  '{}'는 {} 앞에 있는 문자나 문자열의 개수를 정
하는 것이다. ex) "ab{2}" 는 "abb"를 나타낸다. 즉 b의 개수가 2개를 나타낸다.
"ab{2,}" 는 abb, abbbbb 등 b의 개수가 2개 이상을 나타낸다.
"ab{3,5}" 는 abbb, abbbb, abbbbb 와 같이 b가 3개에서 5개 까지를 나타낸다.
 '()' 는 ()안에 있는 글자들을 그룹화 한다.
ex) a(bc)* 는 a, abc abcbc 등 'bc'가 없거나 하나 이상인 경우이다.
"a(bc){2}" 는 abcbc 를 나타낸다.
 '|' 는 OR 연산자 기능을 한다.
"kim|lee" 는 kim 또는 lee 둘중 하나를 나타낸다.
 지금 까지 정규표현식의 기본적인 기호에 대하여 정리해 보았다.
그럼 다음 시간에는 좀더 복잡한 기호식에 대하여 알아 보겠다.
 [ 정규 표현식에 대해 알아보자 (2) ]
 이번에는 좀 더 복잡한 정규 표현식의 예를 다루어 보자
 문자 클래스
 [[:alpha:]] 는 [a-zA-Z] 와 동일
[[:digit:]] 는 [0-9] 와 동일
[[:alnum:]] 는 [a-zA-Z0-9] 와 동일
[[:space:]] 는 공백 문자 의미
 많은 예제를 이해함으로 좀더 깊이 있게 정규 표현식을 나열해 보자
 ^[1-9][0-9]*$ : 1000 또는 200 처럼 처음 숫자가 0 이 아니고 끝까지 숫자만 존재 즉 돈등의 값을
 유효 한지 검사 한다.  ^(0|[1-9][0-9]*)$ : 0 또는 1000, 200처럼 돈의 단위가 될수 있다.
 ^(0|-?[1-9][0-9]*)$ : 이표현은 음수 값도 표현 되어진다.
 ^[0-9]+(.[0-9]+)?$ : 즉 소수점 표현을 위해 나타내었다. '.' 는 임의의 한 문자가 아닌 소수점 
마크 '.'을 나타내기 위해 사용 되었다. 즉 20 또는 21.2 같은 소수점 한자리까지만 나타낸다.
  ^[0-9]+(.[0-9]{2})?$ : 이것은 소수점 두번째까지 나타낸다는 것이다. ex) 0.12  ^[0-9]+(.[0-9]{1,2})?$
 : 이것은 소수점 하나 또는 두개까지 인것이다.  ^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$ : 이것은 3자
리식 짤라서 콤마를 붙여 주면서 소수점 한자리에서 두자리 까지 표현 한다. ex) 12,234,566.12 
 위와 같이 예를 들어 간단히 설명해 보았다. 위의 부분을 자세히 분석해보구 이해가 확실
히 되면 어느 정도 자신이 생길 것이다.  그럼 다음은 마직막으로 자주 웹프로그램에서 사
용하는 메일 및 웹등의 유효성을 검사 하여 링크를 걸어 주는 것이 대하여 이야기 해보겠
다.   [ 정규 표현식에 대해 알아보자(3) ]
   이번에는 정규 표현식을 사용 하여 메일 및 웹 링크등의 유효성 검사 및 링크 걸어주기 
등에 대하여 알아 보자.  이메일 유효성 검사
 이메일에 대하여 알아보면 이메일 주소는 유저명과 서버명을 '@'를 사용 하여 나타낸다. 
예를 들면 start at linuxstart.co.kr 과 같이 나타낸다.  유저명의 조건
 대문자, 소문자, 숫자 그리고 '.' '-' '_' 을 가질 수있다.
유저명은 '.' 로 시작 또는 끝나서는 안되다.
 [_0-9a-zA-Z-]+(.[_0-9a-zA-Z]+)*
 위와 같이 유저명의 유효성을 검사 할 수 있다.
 서버명의 경우
 위의 유저명의 경우와 동일하다.
단 '_' 을 사용 해서는 안된다.
 [0-9a-zA-Z-]+(.[0-9a-zA-Z-]+)*
 와 같이 나타낼 수 있다.
 전체의 전자우편 유효성 검사는 유저명@서버명 이므로 아래와 같다.
 ^[_0-9a-zA-Z]+(.[_0-9a-zA-Z+)*@[0-9a-zA-Z]+(.[0-9a-zA-Z]+)*$
 와 같이 표현 할 수 있다.
 주소 유효성 검사
 HTTP 의 주소등 자동 링크 걸어 주기 위해선 먼저 URL의 유효성을 검사 하여야 한다.
 URL 은 대문자, 소문자, 숫자 ,'.','_','=','&','?','~','@','/','+' 를 사용 할수 있다
 즉 http://([0-9a-zA-Z./@~?&=_]+) 가 된다.
 링크를 PHP를 사용하여 HTML로 걸어 주기 위한 방법
 $add="www.linuxstart.co.kr";
$pattern = "([0-9a-zA-Z./@~?&=_]+)";
$link = ereg_replace($pattern, "<a href='http://1'>http://1</a>" $add);
echo ("$link");
 의 결과 $link 는 다음처럼 변경 된다.
<a href='http://www.linuxstart.co.kr'>http://www.linuxstart.co.kr</a>
와 같이 된다. 참고로 1 은 첫번째 괄호안의 값을 말한다. 2는 2번째 등등
 그럼 메일 링크의 경우를 보자
 $mail = "start at linuxstart.co.kr";
$pattern = "([_0-9a-zA-Z]+(.[_0-9a-zA-Z]+)*)@([0-9a-zA-Z]+(.[0-9a-zA-Z]+)*)"
$link = ereg_replace($pattern, "<a href='mailto:1@3'>1@3</a>",$mail);
echo ("$link");
 의 결과 $link 는 다음과 같다.
<a href=mailto:start at linuxstart.co.kr>start at linuxstart.co.kr</a>
와 같이 된다.
 그럼 지금까지 정규 표현식에 대하여 이것으로 마친다...
 <2000-03-21 : 리눅스스타트>
이름
암호


>> 관련글
27545 정규식좀 갈켜주세요  갈고파  2001.04.18  ....
  답장 RE: 정규식좀 갈켜주세요  김점산  2001.04.18  ....
Register [ localhost 목록보기 윗글 아랫글
글쓰기
답장쓰기 수정 삭제
정규표현식 [ 상세 검색 ]
페이지로딩: [ 1.44 초 ] 작업시간: [ 0.73 초 ]

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved
[TOP]

적수네 동네
+
| 적수네 동네
| 공부방
| 리눅스 잡지 서고
| LSN 소스
| 링크 모음
+---+
게시판
+
| 떠들어보세!
| 질문과 답변
| 새소식과 정보
| 1원짜리 팁?
| 대화방
+---+
칼럼?
+
| 세하 훔쳐보기
| Welcome2nite
| 혜진의 염장판
+---+
리눅스 상표권
+
| 반대 서명란
| 토론 게시판
+---+
GNU
+
| GNU 선언문
| GNU GPL
| GNU 미러 목록
+---+
프로젝트?
+
| 리눅스카운터
| RC5DES
| 실질헌법 제작
+---+
커널 소식
+
| 안정 버젼: 2.4.14
+---+
테마 선택
+
LSN 방송국?
+
| OFF AIR
+---+
회원
+
| 로그인
+---+
[ 적수네 동네 ] [ 리눅스 상표권 독점 반대 ] [ 한글 리눅스 문서 프로젝트 ] [ KrLine ] [ 사랑넷 ] [ Valid HTML 4.0! ] [ SlashDot ] [ Freshmeat ]
Copyleft (C) 1998-2001 Byeong-Chan Kim . License
TIME: 1789570321
System by WYZsoft, HDD by I.O.Linux, Mizi Research, Embryo, WOWLINUX, Domain by SarangNet, Network by KrLine.