목차

<title> 정규식 규칙 </title>

표현 규칙

이것만 봐서는 전혀 감이 안오지만..

한글자에 대해서
[abc] a,b,c 중 아무 한 문자라도 있으면 선택
[^abc] a,b,c 를 제외한 나머지 어떤 문자라도 나오면 선택
[a-z] a ~ z 사이의 어떤 글자라도
[a-zA-Z] a ~ z , A ~ Z 사이의 어떤 알파벳 문자라도
미리 정의된 글자셋을 선택
\s [ \t\n\r\f\v] 왼쪽의 글자(공백문자들) 가운데 어떤 문자인 경우
\S [^ \t\n\r\f\v] 왼쪽의 글자(공백문자들)가 아닌 다른 어떤 문자의 경우
\d 0~9 사이의 숫자를 찾으면
\D 숫자가 아닌 ([^0-9]) 문자를 찾으면
\w 영문자, 숫자의 글자를 찾으면 ([a-zA-Z0-9_])
\W 영문자, 숫자를 제외한 다른 글자를 찾으면
\b \w 또는 \W 에 해당되는 단어의 사이를 찾으면
\B 단어 끝 부분이 아닌 곳
\<글자> \ 다음에 오는 문자를 순수 문자로 인식. '.'과 같은 키워드를 글자로 사용하려고 할때 씁니다.
선택지, 그룹화
() 찾으려는 문자열을 한개의 그룹으로 본다. 매우 요긴함.
| 왼쪽 아니면 오른쪽 문자 중 어떤 것을 먼저 찾으면
(^Css)|(cSS$) Css로 시작되는 문자열 또는 cSS로 끝나는 문자열을 찾으면
^ 문자열의 시작 부분에 찾으려는 글자가 있는 경우
^aB aB로 시작되는 문자열을 찾는다.
$ 문자열의 끝 부분에 찾으려는 글자가 있는 경우

그룹 기능 추가

검색된 문자열의 일부분에 대해서, 뭔가 하고 싶을때

라든지, 경험 부족으로 다른 경우는 잘 모르겠지만.

간단한 예

| toggle breakpoint  			f9
| ::: |

'f9' 다음 개행 문자만 선택하고 ':: |' 다음 부분의 개행문자는 무시하고 싶을때

(?<=[^|])\n
  1. |가 아닌 한 글자 + 개행문자를 선택하고
  2. |가 아닌 한 글자 뒷부분만 선택 값으로 캡춰한다.

Repetition Operator

{n,m} 앞쪽의 선택 규칙이 n 번 이상, m 번 미만 나오는 규칙. (와우..)(n > ? > m)
{n,} Match the previous item n or more times
{n} Match exactly n occurrences of the previous item
? 없거나 하나인 문자 찾기 (이전 검색 결과로부터) {0,1}
+ Match 1 or more occurrences of the previous item {1,}
* Match 0 or more occurrences of the previous item {0,}

Option

g “Global” – find all matches in the string rather than just the first
i “case Insensitive” – ignore character case when matching
m “Multiline” – search over more than one line if the text contains line breaks

사용하면서 정리

웹에서 미리 확인 가능한..

그외

'#'으로 시작하는지 검사

          ##dkfjdkfjdkfjdkjfkdjf
(or)
##dkfjdkfjdkfjdkjfkdjf

에서 '#'으로 줄이 시작되는지 검색하기 위해서

줄의 시작에 공백이 있거나 (없거나) 상관없이 #으로 시작되는 글자들

^[ \t]*# 

줄의 시작에 공백이 있거나 (없거나) 상관없이 #이 두개로 시작되는지 확인 있다면 체크

^[ \t]*#{2}

키워드를 분리하기 위한 토큰

아래처럼 입력되는 라인에서 각 토큰을 분리하기 위한 정규표현, 조건은

starbucks  300  2010/1/27
starbucks ,  300 ,  2010/1/27
starbucks	300	2010/1/27

이 스트링에서, 각각 토큰을 구분하기 위해서 찾기 위한 코드

basic code   : ([ ]{2})|,|\t
upgrade code : ([ ]{2})|\t|([\t ]*,[\t ]*)

설명

  1. “([ ]{2})” : 공백 2개를 찾는다.
    • “()“는 안의 것을 서브 선택문이 된다.
    • ”[ ]“는 공백을 의미한다.
    • ”[ ]{2}” 에서 {2}는 반복수를 의미하는데 “[ ]“가 2번 (공백2개) 반복되는 것을 의미한다.
  2. '|' 는 또는 (or) 논리 연산
  3. “\t” : 탭을 찾는다.
  4. ”([\t ]*,[\t ]*)” : 콤마를 찾는다.
    • “[\t ]*” 콤마 전후로 탭이나 공백이 있으면 그것들도 포함한다는 의미
    • “ , ” 나 “, ” 나 “,” 등을 선택하게 된다.

중간 문자 추출

아직 연속 검색은 무리

sports 영역만 ( “:/ / ~ .” 사이의 문자 )

http://sports.khan.co.kr/club3/board.html?bid=8&aid=154484
http://sports.khan.co.kr/club3/board.html?bid=8&aid=154483
http://sports.khan.co.kr/club3/board.html?bid=8&aid=154482

msdn에서 사용한 참고 예정

http://search.microsoft.com/us/Search.asp?qu=atl&boolean=ALL#results

"({[^:/?#]+}:)?(//{[^/?#]*})?{[^?#]*}(?{[^#]*})?(#{.*})?" 

이걸 사용하면 , 아래 같은 결과가 나온다는데..

0: "http"
1: "search.microsoft.com"
2: "/us/Search.asp"
3: "qu=atl&boolean=ALL"
4: "results"

이해한 부분

[^:/?#]+  --> http (1)

://search.microsoft.com/us/Search.asp?qu=atl&boolean=ALL#results

로 검색시작

[^/?#]* --> search.microsoft.com (2)

([^://]+)?=([^.?]*)