[[pagelist(^정규표현식/*)]]
[[tableofcontents]]
== 이스케이프 다시 살펴보기(상호) ==
== 공백문자 찾기(홍기) ==
== 특정한 문자 형태와 일치 시키기(준석) ==

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

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

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

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

=== 예문 ===

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'과 같고 그렇게 사용 할수있다.

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



== 포직스 문자 분류 사용하기 ==
 * 자바스크립트는 포직스 문자 클래스를 지원하지 않는다.
=== 포직스 문자 분류표 ===
 ||{{{[: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]}}}와 같다 ||
=== 예 ===
 * HRGB 코드 값 찾기
  * {{{#[[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]][[:xdigit:]]}}}
  * 주의할 점은 대괄호가 두번 들어간다. posix 표현은 [:xdigit:] 이기 때문에 문자집합을 정의하려면 대괄호를 한번 더 써줘야 한다.
== 정리해보자 ==
 * 문자와 문자 집합으로 찾는 기본 내용은 2장과 3장에서 모두 배웠고, 이 장에서는 특정 문자나 전체 집합 혹은 문자 클래스와 일치하는 메타 문자를 소개했다. 이렇게 메타 문자와 포직스 클래스는 정규 표현식 패턴을 단순하게 만든다.