시간을 기록하다

블로그 이미지
by 기록자
  • 18,064Total hit
  • 31Today hit
  • 31Yesterday hit

'정규식'에 해당되는 글 2건

  1. 2009/05/20
    egrep 정규표현식 메타문자
  2. 2008/03/19
    Boost 라이브러리 설치
egrep(extended grep)은 grep 명령어의 좀더 확장된 버젼이라 할 수 있다. 다시 말하면, 좀 더 확장된 정규표현식을 메타 문자를 사용할 수 있다. 다만 grep에서 사용할 수 있었던 \{와 \{ 는 지원하지 않는다. 그러나 egrep에서 사용할 수 있는 메타 문자를 이용하면 훨씬 편리하게 정규표현식을 사용할 수 있다.


 메타문자 기능
사용 예
설명

^
행의 시작 지시자
'^love'
 love로 시작하는 모든 행과 대응

$
행의 끝 지시자
'love$'
 love로 끝나는 모든 행과 대응

.
하나의 문자와 대응
'l..e'
 l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응

*
선행 문자와 같은 문자의 0개 이상의 개수와 대응
' *love'
 0개 이상의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응

[ ]
[ ]사이의 문자집합 중 하나와 대응
'[Ll]ove'
 love나 Love를 포함하는 행과 대응

[^ ]
문자집합에 속하지 않는 한 문자와 대응
'[^A-KM-Z]ove'
 A와 K 사이의 범위에 포함되지 않거나, M과 Z 사이에 포함되지 않는 한 문자와 ove가 붙어 있는 문자열과 대응

+
선행문자와 같은 문자의 1개 이상의 개수와 대응
'[a-z]+ove'
 a와 z 사이의 1개 이상의 문자와 ove가 붙어있는 문자열과 대응(ex: move, love, ...)

?
선행문자와 같은 문자의 0개 혹은 1개와 대응
'lo?ve'
 l 다음에 o가 0개 혹은 1개이고 ve가 붙어있는 문자열과 대응. love 혹은 lve.

a|b
a 혹은 b와 대응
'love|hate'
 love 혹은 hate와 대응

( )
정규표현식을 묶어준다
'lov(able|ely)'
'(ov)+'
lovable 혹은 lovely와 대응
ov가 한 번 이상 등장하는 문자열과 대응

개인적으로 처음으로 정규식을 사용하게 되었던게 C#에서 문자열 처리를 해야할 때였다. C#에서는 좀더 확장된 기능을 사용할 수 있어서 편리했던 것 같다(물론 큰 차이는 없지만...). egrep에 좀 더 익숙해지면 아마도 충분히 편리하게 사용할 수 있을 것 같다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TRACKBACK 0 AND COMMENT 0

C++ 프로그램을 만들다보면 정규식이 필요한 경우가 많이 있다. 특히나 요즘처럼 웹문서를 파싱해야할 경우 일일이 if else 로 처리해서 파싱한다는건 너무나 무식한 방법이다. 이럴 경우 정규식을 이용해서 필요한 부분만 걸러서 데이터를 처리해주면 정말 깔끔하게 만들수 있다.

JAVA나 C#의 경우 정규식 라이브러리가 기본적으로 제공되지만(사실 자바는 내가 거의 사용하지 않아서 잘 모름;;) C++의 경우 기본적으로 제공되지 않기 때문에 정규식을 사용하려면 정규식 라이브러리를 설치해서 사용해야한다. 인터넷을 뒤져보면 이것저것 여러가지 라이브러리들이 많이 나와있지만 이곳에서는 그 중 가장 유명하다고 할 수 있는 Boost 라이브러리를 설치하는 방법을 적고자 한다.
우선 사이트에 들어가서 압축 파일을 다운 받는다. 링크는 아래와 같다.
http://www.boost.org/ 

이 글을 쓰는 시점에서의 최신 버젼은 1.34 인데 이 버젼을 받아서 설치해보니 옵션을 비졀스투디오6 으로 주더라도 비졀스투디오 2005가 설치되어 있어서 그런지 자동으로 2005버젼으로 설치되어 버린다. 내 컴퓨터에만 그럴수도 있겠지만 나와 같이 6.0 버젼이 안깔리고 2005버젼으로만 설치되버린다면 옛날 버젼인 1.31 버젼을 받도록하자. 또한 이곳에서는 1.31 버젼의 설치방법만을 기록해둘 것이다.
그러면 압축파일을 받은 후에 압축을 풀고 폴더를 열어보자. 폴더를 열어보면 아래와 같이 파일들과 폴더들이 보일것이다.

사용자 삽입 이미지

이 폴더를 이해하게 쉽게 부스트폴더라고 부르도록 하겠다.
부스트폴더안에 보면 tools 폴더가 보이는데 이곳에 들어간다. 그리고 build 폴더에 들어간다. 그리고 jam_src 폴더에 들어간다. 이곳에 보면 build.bat 라는 파일이 있는데 이걸 실행시킨다. 실행시키고나면 bin.ntx86 이라는 폴더가 만들어지는데 이 폴더에 들어가면 bjam.exe jam.exe 등등 몇개의 파일들이 있을것이다. 여기서 bjam.exe 파일을 복사해서 아까 말했던 부스트폴더에 붙여넣도록하자.
그리고 커맨드창을 열어서 부스트폴더로 이동한다. 그리고 입력창에 아래와 같이 입력을 한다.
bjam --prefix=c:\boost  "sTOOLS=msvc"  install
여기서 옵션으로준 c:\boost 는 boost라이브러리가 설치될 폴더를 가리키는데 이 옵션을 적지 않으면 디폴트로 c:\boost 폴더에 설치가 된다. 자신이 설치하고픈 폴더에 알아서 설치하도록하자. 그리고 옵션 "sTOOLS=msvc" 는 어떤 컴파일러인지를 사용하는지를 말하는 것인데 비졀스투디오6.0 의 경우에 msvc 라고 적어주면된다. 비졀C++.net은 vc7 2003은 vc-7_1, 2005는 vc-8_0 이 된다. 다른 버젼을 사용하는 분들은 홈페이지에 가서 다큐먼트를 읽어보도록 하자(딴건 나도 모른다 -_-). 아무튼 이렇게 입력해주고나면 컴파일을 시작하게 되는데, 시간이 십여분(길게는30분이상) 걸리니 그 동안 짜파게티라도 끓여먹자(왜 하필 짜파게티인겨? -_-).

정상적으로 설치가 끝났다면 c:\boost\include 폴더와 lib 폴더가 생성되어 있을것이다. 두 폴더안에 파일들이 한가득씩 들어 있다면 제대로 된 것이고 만약 include폴더에는 파일들이 있는데 lib 폴더가 텅텅 비어있다면 잘못설치된것이다. 몇번 테스트 결과 비졀스투디오 설치의 문제인것 같은데 이럴경우 비졀 스투디오2005 와 6.0이 둘다 설치되어 있는 PC일 것이다. 다른 해법은 모르겠고 여기서 말해줄수 있는건 비졀스투디오 6.0과 2005를 둘다 지우고 6.0을 새로 설치하고 boost를 위와 같이 설치한 후에 2005를 설치하면 정상적으로 설치될 것으로 보인다. 다 지우고 새로 했는데도 안될 경우...책임은 지지 않습니다 -_-;;

정상적으로 설치가 됐다면 비졀스투디오에서(6.0이라면) Tools 메뉴의 Options에서 Directories 탭에서 인클루드 경로와 라이브러리 경로를 잡아준다.
소스코드에서 regex를 사용하고자 한다면 regex.h 를 인클루드 시키고 사용하면 된다.
이올린에 북마크하기(0) 이올린에 추천하기(0)
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
TRACKBACK 0 AND COMMENT 0

ARTICLE CATEGORY

분류 전체보기 (42)
개발 노트 (1)
초보의 알고리즘 (17)
프로그래밍 팁 (13)
기타 등등등등등 (11)

CALENDAR

«   2010/03   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

ARCHIVE

LINK