U E D R , A S I H C RSS

정규표현식/스터디/메타문자사용하기

1. 이스케이프 다시 살펴보기(상호)

정규표현식을 이용하여 메타문자 그 자체를 찾기 위해서는 이스케이프 문자를 사용하면 된다.
[ 는 \[
] 는 \]
  • 배열을 검색하기 위해 활용할 수 있다.
. 는 \.
\ 는 \\
  • 윈도우 시스템에서 폴더의 구분을 역슬래시(\)로 하는 반면에 리눅스 시스템은 슬래시(/)를 사용한다. 따라서 이것을 변경하기 위해 사용할 수 있다.
등등........

2. 공백문자 찾기(홍기)


메타문자는 일반적으로 두 가지 범주로 나뉜다.
  • 텍스트(ex : .)
  • 정규 표현식 문법의 일부로 쓰는 문자(ex : [])

정규표현식 검사를 할때 공백문자를 검색해야할 경우도 있다. 공백문자는 다음과 같이 나타낼 수 있다.
\b 백스페이스
\f 페이지 넘김(form feed)
\n 줄바꿈
\r 캐리지 리턴
\t 탭
\v 수직 탭

3. 특정한 문자 형태와 일치 시키기(준석)


자주쓰는 문자 집합들은 특수한 메타 문자로 대신하여 찾기도 한다. 이런 메타 문자들을 문자 클래스(classes of characters)라고 부른다. [0-9] = [0123456789] 와 같은걸 알것이다. 이것을 [0-9] 보다 더 편한게 찾으려면 '\d'로 찾을수 있고 제외하고 찾기는 '\D'로 [^0-9]를 대신할수 있다.

위와 보면 깨달을수 있다시피 정규 표현 문법은 대소문자를 구별하며 소문자와 대문자를 서로 반대임을 뜻한다.

'\w'는 영문자와 숫자를 포함하며
'\W'는 영문자와 숫자를 제외한것을 찾는것이다.

그것은 다음의 예문으로 본보기로 할것이다.

3.1. 예문


11213
A1C2E3
48075
48237
M1B4F2
90046
H1H2H2

정규 표현식
\w\d\w\d\w\d

11213
A1C2E3
48075
48237
M1B4F2
90046
H1H2H2


위의 예문에서는 정규표현식이 숫자로만이 이루어진것도 찾을수 있어야하지만 찾지 못하는걸 볼수있다.

그 이유는 ... 책에 정확히 안 나왔다. 추후 찾아보겠다.

이 예제 말고는

'\s' 모든 공백문자 '\S' 모든 공백문자를 제외

'\c' 는 모든 제어문자 '\C' 모든 제어문자를 제외

16진수 표현 및 사용

'\x'를 붙여 10진수 10은 '\x0A'로 표현할수 있다. 이 문자를 사용한다면 '\n'과 기능이 같다

8진수 표현 및 사용

'\0'을 붙여 사용한다. '\011'은 '\t'과 같고 그렇게 사용 할수있다.

* 이와 같은 기능을 사용하여 정규표현식을 더욱 간결하게 만들수 있을 것이다.



4. 포직스 문자 분류 사용하기

  • 자바스크립트는 포직스 문자 클래스를 지원하지 않는다.

4.1. 포직스 문자 분류표

[:alnum:] [a-zA-Z0-9]
[:alpha:] [a-zA-Z]
[:blank:] 빈칸이나 [\t]와 같다.
[:cntrl:] 아스키 제어문자. 0-31, 127번
[:digit:] [0-9]
[:graph:] [:print:]와 동일하나 빈칸제외
[:lower:] [a-z]
[:print:] 출력가능한 모든 문자
[:punct:] [:alnum:]이나 [:cntrl:]가 포함되지 않은 모든 문자
[:space:] 빈칸을 포함한 모든 공백문자 [\f\n\r\t\v]
[:upper:] [A-Z]
[:xdigit:] 모든 16진수 숫자 [a-fA-F0-9]와 같다

4.2.

  • HRGB 코드 값 찾기
    • #[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]
    • 주의할 점은 대괄호가 두번 들어간다. posix 표현은 :xdigit: 이기 때문에 문자집합을 정의하려면 대괄호를 한번 더 써줘야 한다.

5. 정리해보자

  • 문자와 문자 집합으로 찾는 기본 내용은 2장과 3장에서 모두 배웠고, 이 장에서는 특정 문자나 전체 집합 혹은 문자 클래스와 일치하는 메타 문자를 소개했다. 이렇게 메타 문자와 포직스 클래스는 정규 표현식 패턴을 단순하게 만든다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-11-11 06:26:03
Processing time 0.1832 sec