2010년 8월 27일 금요일

노마의 미투데이 - 2010년 8월 26일

  • 퇴근길에 몇 자 적습니다. 피곤하지만 버스안엔 사람이 얼마없구 밖엔 비가 내리네요 언능 뛰어가야겠습니다. 편안한 밤들되세요(노마 퇴근길 me2photo) 2010-08-26 23:16:39

이 글은 노마님의 2010년 8월 26일의 미투데이 내용입니다.

2010년 8월 20일 금요일

Firefox 속도 개선 방법

Firefox가 IE에 비해 너무 느려 터져서 무슨 방법이 있나 인터넷을 검색해 보았읍니다.

Firefox의 초기설정치는 전화모뎀에 맞게 설정되어 있읍니다.
초고속인터넷을 쓰시는 분은 주소창에 about:config를 치고 설정을 바꾸면 Firefox가 대단히 빨라집니다. 

nglayout.initialpaint.delay -> 0
(nglayout.initialpaint.delay 항목이 없으면 마우스 오른쪽 클릭으로 새 항목을 만듭니다.)
network.http.pipelining -> true
network.http.proxy.pipelining -> true
network.http.pipelining.maxrequests -> 64 이상


browser.cache.memory.enable -> true
browser.cache.memory.capacity -> 65536
(메모리가 많으면 더 늘려 준다.)
plugin.expose_full_path -> true

이렇게 하니 제법 상당히 빨라 집니다.



출처: phpschool

노마의 미투데이 - 2010년 8월 19일

  • 이제 777전 버스를 탑니다. 이럴줄알았으면 저녁을먹고 좀 더 일을할껄 그랬네요. 다복한 저녁시간들되시길..(노마 퇴근길 777버스) 2010-08-19 19:16:36

이 글은 노마님의 2010년 8월 19일의 미투데이 내용입니다.

2010년 8월 18일 수요일

PHP 정규표현식 정리

PHP 정규표현식 정리  

글쓴이 : 오렌지블루
  저작권자 이메일 :

출처 : codelib.co.kr
  작성일 : 2002/03/02 11:54:16



글내용

  
정규표현식이라고 불리우는 Regular expression 에 대한 phpbuilder.com 의 포럼부분 을 토대로 첨삭된 문서이다. 대부분의 프로그래밍에서 많이 필요로 하는 정규표현식 의 간략한 문법에 대해 소개하고 있다.
------------------------------------------------------------
------------------------------------------------------------

정규표현식 (Regular expression)

--------------------------------------------------------------------------------
정규표현식 (Regular 예pression)

정규표현식은 문자열의 일정한 패턴을 찾던지 치환하여 주는 기능을 가지고 있다.
메일 주소검사라던지, 소수점 몇째자리 까지 끊어서 보여주기 등.. 더욱더 복잡한
문자열도 이 정규표현식으로 처리할수 있다....
이는 프로그램시에 많은 일을 쉽게 처리하여 준다 (대부분 내장함수에도 있네요...)
특히 웹에서는 폼값을 처리할때 특정폼의 형식이 원하는 형식에 맞는지 검사할때
많이 쓰일수 있다. 정규표현식은 거의 모든 언어에서 지원하지만 사용법은 조금씩
다르다. 하지만 크게 다르지 않으므로 익혀놓으면 많은 도움이 되리라 생각된다.

**아래의 글은 몇가지 문서를 참고하였으며 정규표현식의 모든것을 포함하지는
않는다. (기본은 phpbuilder.com의 컬럼란의 내용이다)
============================================
편의상 반말을 한것에 대하여 양해를 구합니다.
============================================

정규표현식은 보통 eregi, eregi_replace, ereg, ereg_replace, 또는 perl 의 함수패턴을
그대로 사용할수 있도록 해놓은 함수 preg_match, preg_split, preg_quote 등의 함수
를 사용한다. (아마 perg 는 php 버전이 3.0.9 이상에서 사용가능할겁니다)

예) 사과라는 문자열을 배라는 문자열로 치환한다.
$string ="이것은 사과 입니다";
ereg_replace("사과","배",$string);


1. ^ 와 $ 의 사용의 예

'^' 는 바로 문자뒤의 문자열로 시작 됨을 가르킨다.
"^The" : 는 "The"로 시작 하는 문자를 말한다.

'$' 는 문자열의 맨 마지막을 가르킨다.
"of despair$" : 는 "of despair"로 끝나는 문자열이다.

"^abc$" : 는 hello로 시작해 hello로 끝나는 경우 이므로 "abc" 만 해당된다..


2. '.' '*' '+' '?' 의 사용법

'.' 은 어떤 문자든지 임의의 한문자를 말한다.꼭 하나의 문자가 있어야 한다.
예) "x.z" 는 xyz, xxz, xbz 등이고 xz난 xyyz는 안된다.

'*' 는 바로 앞의 문자가 없거나 하나 이상의 경우를 말한다.
예) "ab*" 는 a, abc, ab, abbbb 등을 말한다.

'+' 는 바로 앞의 문자를 나타내면 꼭 1나 이상이어야 한다.
예) "ab+" 는 abc, abbb 등이고 a는 되지 않는다.

'?' 는 바로 앞의 한문자가 있거나 없는것을 말한다. 단지 한문자 만이어야 한다.
예) "ab?" 는 a 또는 ab 를 나타낸다.


3. [], {} 와 () 그리고 |

3-1 '[]' 는 [] 안에 존재하는 문자들중 한 문자만을 나타낸다.
예) [abc] 는 a 또는 b 또는 c 중에 한문자를 나타낸다. 여기서 '-'를 사용할땐 범위를 나타낸다.
즉 [ a-f ] 는 [abcdf] 와 같은것을 나타낸다.
문자클래스 오퍼레이터라는 것에 대해 잠시..
유사한 성격의 문자들을 사용자가 알아보기 쉽게 단어로 그룹을 지었다고 보면 된다.

alnum : 알파벳과 숫자
alpha : 알파벳
blank : 스페이스나 탭 (시스템에 의존적임)
cntrl : 아스키코드에서의 127 이상의 문자와 32 이하의 제어문자
(한글의 첫째바이트가 127 이상이므로 제어문자로 취급됨 :()
digit : 숫자
graph : 스페이스는 제외되고 나머지는 'print' 항목과 같음.
lower : 소문자
print : 아스키코드에서 32에서 126까지의 찍을 수 있는 문자
punct : 제어문자도 아니고 알파벳.숫자도 아닌 문자
space : 스페이스, 케리지 리턴, 뉴라인, 수직 탭, 폼피드
upper : 대문자
xdigit : 16진수, 0-9, a-f, A-F

[[:alnum:]]은 [a-zA-Z0-9] 와 같은 의미다.
[[:alpha:]]은 [a-zA-Z] 와 같은 의미다.
문자열 오퍼레이터는 [] 사이에서만 효력을 발휘한다.
그리고 반대의 의미도 가능하다.
[^[:alnum:]] 은 알파벳과 숫자의 조합이 아닌것을 말한다.
[^a-zA-Z0-9] 와 같이 사용될수도 있다.



'3-2 {}'는 {} 앞에 있는 문자나 문자열의 개수를 정하는 것이다.

예) "ab" 는 "abb"를 나타낸다. 즉 b의 개수가 2개를 나타낸다.
"ab{2,}" 는 abb, abbbbb 등 b의 개수가 2개 이상을 나타낸다.
"ab{3,5}" 는 abbb, abbbb, abbbbb 와 같이 b가 3개에서 5개 까지를 나타낸다.


3-3 '()' 는 ()안에 있는 글자들을 그룹화 한다.

예) a(bc)* 는 a, abc abcbc 등 'bc'가 없거나 하나 이상인 경우이다.
"a(bc)" 는 abcbc 를 나타낸다.


3-4 '|' 는 OR 연산자 기능을 한다.

"a|b" 는 a 또는 b 둘중 하나를 나타낸다.

참고할것은 기호인데 이것은 . (, ) 등 단지 다음에 오는것이 문자라는것을
의미한다. 어떤한 처리도 없이 문자로만 인식한다.
{1,3} 하고 하면 {1,3} 와는 다르다.

4. 기초 활용

"a(bc)*" 는 a라는 문자를 포함하고 bc라는 문자열이 없거나 계속반복되는 문자열이다.
이것은 a, abc ,abcbc abcbcbc.... 등의 문자열을 의미한다.

"a(bc){1,5}" 는 a 라는 문자를 포함하고 bc 라는 문자를 묶은 형태인데. bc 라는 문자가
한번에서 5번까지를 말한다. --말이 더 어렵다....
이것은 abc,abcbc,abcbc,abcbcbc,abcbcbcbc,abcbcbcbcbc 의 문자열을 의미한다.

^[1-9][0-9]*$ 는 자연수를 표시할수 있다.
^(0|[1-9][0-9]*)$ 는 0을 포함하는 자연수
^(0|-?[1-9][0-9]*)$ 정수표시
^[0-9]+(.[0-9]+)?$ 소숫점 표시
^[0-9]+(.[0-9])?$ 소수점 둘째자리 까지
^[0-9]+(.[0-9]{1,2})?$ 소수점 둘째자리나 첫째자리
^[0-9]{1,3}(,[0-9])*(.[0-9]{1,2})?$ 돈의 표시...
(센트까지 표시가능 예 2,200.20 : 이천이백이십센트 또는 이천이백이십전 맞나?)

5. 복합활용

5-1 메일 주소 체킹..

5-1-1 : 유저명@도메인명

유저명 : 대문자, 소문자, 숫자 그리고 '.' '-' '_' 을 가질 수있지만 . 로 시작해서는 안된다.
[_0-9a-zA-Z-]+(.[_0-9a-zA-Z]+)*
이때에는 eregi 를 사용할때까 아닌 ereg 를 사용할때이다. eregi 함수는 대소문자구분이 없다.
^[_a-z0-9-]+(.[_a-z0-9-]+)*$ eregi 함수를 사용할때...

5-1-2 : 도메인 : 유저명과 기본적으로는 같지만 _ 가 없다.
^[a-z0-9-]+(.[a-z0-9-]+)*$

5-1-3 : 메일 주소 체킹
위의 것의 조합이다.

^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$

5-2 URL 에 http:// 붙여주기

URL 은 대문자, 소문자, 숫자 ,'.','_','=','&','?','~','@','/','+' 를 사용 할수 있다
http://([0-9a-zA-Z./@~?&=_]+) 가 된다.


$add="www.codelib.co.kr";
$pattern ="([0-9a-zA-Z./@~?&=_]+)";
$link =ereg_replace($pattern, "http://1" $add);
echo ("$link");

의 결과 $link 는 다음처럼 변경 된다.
http://www.codelib.co.kr
와 같이 된다. 참고로 1 은 첫번째 괄호안의 값을 말한다. 2는 2번째..

몇가지 복잡한 정규표현식을 풀다보면 이해하는데 도움이 될것이다 '  

출처 : koreaphp.co.kr 

[출처] PHP 정규표현식 정리 |작성자 뮤즈

-----------------------------------------------------------------------------------

 

Regular Expressions

  1. 문자 집합 : [] - 대괄호 사이에 찾고자 하는 문자들의 집합을 표기한다
    • 예)
      • [0-9] : 0부터 9까지의 숫자 한 문자
      • [Aa] : A 혹은 a에 대응하는 한 문자
    • "-"(하이픈)은 문자 집합인 대괄호 안에서 만 문자의 범위를 지정하는 기호로 쓰인다.
  2. 제외 문자 : ^ (캐럿) - ^기호 뒤의 문자를 제외한 문자 (집합기호 - [] - 안에서 쓰일때)
    • 예)
      • ns[^0-9] : nsx - ns다음의 x가 숫자가 아닌 한 문자에 대응
  3. 메타 문자 : 정규표현식에서 특별한 의미를 가지는 문자

    • 정규표현식에서 메타문자 및 기호문자를 찾고자하는 문자에 대응하려면 "\"(escape)를 붙혀 사용한다.

    • 모든 문자 : .(마침표) - 모든 문자에 대응되는 한 문자

    • 공백 문자 : \n, \r, \t, \f-form feed, \v-vertical tab

    • 특별한 문자 형태

      • 숫자와 숫자 아닌문자 : \d - [0-9], \D - [^0-9]

      • 영숫자 문자와 영숫자 문자가 아닌 문자 : \w - [a-zA-Z0-9_], \W - [^a-zA-Z0-9_]

      • 공백문자와 공백이 아닌문자 : \s - [\f\n\r\t\v], \S - [^\f\n\r\t\v]

      • 16진수 8진수 : \x, \0

  4. 반복찾기
    • + : 한 문자 이상 - + 기호 앞으 문자가 하나 이상 반복
    • * : 문자가 없거나 하나 이상 반복
    • ? : 문자가 없거나 하나와 대응하는 문자   예) https?// - s가 없거나 한번 있는 경우와 대응
  5. 반복회수 지정하기 : {} (중괄호) - 중괄호 앞의 문자에 대하여 반복회수 지정
    • 반복회수 지정 : {반복회수} - 저정된 회수만큼 반복하는 경우 대응
      • 예)
        • #[0-9A-Fa-f]{6} - 16진수 RGB표기
    • 최소, 최대 반복회수 지정 : {최소, 최대} - 최소번 또는 최대번만 반복되는 경우 대응, 최소값에 0과 최대값의 생략 가능
      • 예)
        • \d{1,2}[-\/]\d{1,2}[-\/]\d{2,4} - -또는 / 구분의 날짜 표기
  6. greedy와 lazy 수량자
    • 탐욕적 수량자 : +, *, {n,}
    • 게으른 수량자 : +?, *?, {n,}?
    • 예) abcd <b>xxx</b> and <b>yyy</b> efgh
      • greedy : <[Bb]>.*</[Bb]> --> <b>xxx</b> and <b>yyy</b>
      • lazy : <[Bb]>.*?</[Bb]> --> <b>xxx</b> 와 <b>yyy</b>
  7. 단어 경계 지정
    • 단어 사이의 공백 : \b - 공백문자(space)와 일치하지만 공백을 일치하는 문자로 지정하지는 않는다. (\B - \b와 반대) --> 단어 사이의 구분자로 쓰임
      • 실제 공백 문자를 찾을 때는 [ ]또는 \s를 활용한다.
    • 시작 문자 지정 : ^(캐럿) - 제외 문자와 달리 표현식의 처음에 사용되어 다음에 나오는 문자를 시작하는 문자로 지정할 수 있다.
    • 마지막 문자 지정 : $ - 앞에 나온 문자가 마지막에 일치할때
    • 다중행 모드 : (?m)
      • 지정한 문자열을 줄단위로 분리하여 표현식을 검색한다.
      • 표현식의 가장 앞에 써준다.
      • 다중행 모드 지정시 ^와 $를 지정단 문자열의 줄단위로 검색하는 것이 가능하다.
    • 예) 라인단위 주석(//) 문자로 부터 해당 라인의 끝까지
      • (?m)^//.*$
  8. 하위 표현식 : () - 괄호
    • 표현식 일부를 괄호로 묶어준다.
    • 중첩 하위 표현식 : 괄호안에 괄호...
    • or 연산자 : | - | 기호의 좌우 둘중 하나가 일치하는 경우
    • 예) 아이피 형식의 문자열
      • (\d{1,3}\.){3}\d{1,3}
      • (((\d{1,2})|(1\d{2}))|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2}))|(2[0-4]\d)|(25[0-5]))
  9. 역참조 : \1 ~ \9
    • 표현식 중 하위 표현식의 순서와 지정한 번호가 해당 하위 표현식과 일치한다.
    • 0번을 지정하면 해당 표현식 전부와 일치한다.
    • 예) html의 <H1~6>태그의 내용 찾기
      • <Hh([1-6])>.*?</Hh\1>
  10. 전방탐색과 후방탐색 : 하위표현식으로 표현
    • 전방탐색 : ?= - 지정한 전방 탐색 기호의 다음 표현식으로 부터 앞에 나오는 일치하는 문자를 찾는다.
    • 후방탐색 : ?<= - 지저한 후방 탐색 기호의 다음 표현식으로 부터 뒤에 나오는 일치하는 문자를 찾는다.
    • 예) html tag기회 내의 내용
      • (?<=<[Tt][Ii][Tt][Ll][Ee]>).*?(?=</[Tt][Ii][Tt][Ll][Ee]>)
    • 부정형 전/후방 탐색 : 전방 - ?!, 후방 - ?<!
      • 예) $로 시작하지 않는 숫자
        • \b(?!\$)\d+\b
  11. 조건 달기 : ?
    • ? 앞의 문자(표현식)가 없거나 한번 일치할때 해당하는 앞으 문자(표현식)과 일치한다.
    • 전후방 탐색(?=, ?<=)의 뒤에 나오는 표현식과 일치할때...
    • 역참조 조건 : (?(backreference)true), (?(backreference)true|false)
      • backreference는 역참조 대상의 하위 표현식이며, \를 붙이지 않고 해당 하위 표현식 순서에 해당하는 번호를 지정한다.
        • 예) IMG 태그나 이미지 태그를 싸고 있는 A태그
          • (<[Aa]\s+[^>]+>\s*)?<[Ii][Mm][Gg]\s+[^>]+>(?(1)\s*</[Aa])>)
        • 예)
          • (\()?\d{3}(?(1)\)|-)\d{3}-\d{4}
    • 전방 탐색 조건 : (?(?=condition)expressions)
      • 예)
        • \d{5}(?(?=-)-\d{4})

* 유용한 정규 표현식 예

- IP : (((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))

- URL : https?://(\w*:\w*@)?[-\w.]+(:\d+)?(/([\w/_.]*(\?\S+)?)?)?

- Email : (\w+\.)*\w+@(\w+\.)+[A-Za-z]+

- HTML 주석 : <!-{2,}.*?-{2,}>

- 주민등록번호 : \d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])-[1-4]\d{6}

- 한글 : [가-힣]

- 유니코드 : \ucodenumber

[출처] 정규표현식|작성자 승현아빠

2010년 8월 15일 일요일

노마의 미투데이 - 2010년 8월 14일

  • 오늘은 주단을 보러왔습니다. 할 께 너무 많네요. 처형까지 가세해서 흠. 볼 께 너무 많아요.. ㅠ.ㅠ 설상가상 어제 찍은 웨딩사진의 반정도를 오늘 다시 찍자고하네요. 메모리카드불량같다고.. 이를 어떻하면 좋을까요?(노마 결혼준비 한복 me2photo) 2010-08-14 11:17:59

이 글은 노마님의 2010년 8월 14일의 미투데이 내용입니다.

2010년 8월 14일 토요일

노마의 미투데이 - 2010년 8월 13일

  • 웨딩촬영하러왔습니다. 비가와서 야외촬영은못하게됐지만… 쩝. 찍을사진샘플 15컷 고르기가 힘들더군요. 신부는화장하러들어갔구… 전 얼마나 기다려야할까요? 흠..(노마 웨딩촬영 HAWASTUDIO me2photo) 2010-08-13 10:05:46
  • 옷 갈아입구 머리도 했습니다. 머쓱하네요 이렇게 꾸며본적이 처음이라..이제부턴 모든 게 처음이겠네요. 처음이 아닌 게 너무 많은데 그래서 그런지 처음이 낯설어집니다, 지금 제 모습처럼. 흠..(노마 웨딩촬영 me2photo) 2010-08-13 10:55:50
  • 끝났다! 이 표현은 안도의 표현은 절대아닙니다. 하지않던 일들에 대한 일종의 불편함들에서의 해방감정도? 암튼 무사히 웨딩촬영을 마쳤습니다. 이렇게 또 결혼에 한 발 다가서네요.(노마 웨딩촬영 me2photo) 2010-08-13 15:19:14

이 글은 노마님의 2010년 8월 13일의 미투데이 내용입니다.

2010년 8월 13일 금요일

노마의 미투데이 - 2010년 8월 12일

  • 수원에서살다보니 대전역에서 기차환승을 자주하는데 대전오면 꼭먹는 가락국수입니다 출출할 시간,식사들은하셨는지 ㅋ(노마 대전역 가락국수 기차 환승 me2photo) 2010-08-12 19:51:51

이 글은 노마님의 2010년 8월 12일의 미투데이 내용입니다.

2010년 8월 4일 수요일

노마의 미투데이 - 2010년 8월 3일

  • 회사출근하랴, 집 알아보러 다니랴, 이사준비 하면서 짐 싸랴, 신혼살림알아보랴, 동사무소가서이것 저것필요서류 떼랴… 김태관!너 정말 수고가많다ㅋ 드뎌이번주말이면 이사하는군하 ㅎㅎ(노마 이사준비 결혼준비) 2010-08-03 15:28:56

이 글은 노마님의 2010년 8월 3일의 미투데이 내용입니다.