Category Archives: 허접프로그래머

예제로 이해하는 정규식 (Regular Expression)

다음의 예제로 정규식을 이해해 봅시다.

[code]#set $a = “hello”#
#set $b = [“hello”, “world”]#
#print $a#
#stop#[/code]

조건 :
1. 모든 문장은 #로 시작해서 #로 끝난다
2. #로 시작하여 공백이 나오거나 #로 끝나기 전까지는 영어 소문자만 가능하다
3. 이후 나오는 문자는 영어 소문자, $, =(1~2개), [, “, ,(콤마),  (공백) 만 사용가능하다
4. 큰따옴표 “”사이의 문자는 아무런 제약을 받지 않는다. 모든 문자 및 특수문자 사용가능
5. [“hello”, “world”]같은식으로 두개이상의 아무런 제약을 받지 않는 큰따옴표 문자가 존재한다 (4번 규약 무한 반복 가능)
6. 두개이상의 공백이 있을수 있다

나의 경우에는 먼저 여러종류의 사용가능한 코드를 생각해 내고 거기에 맞추어 조건을 생각해 냈다.

이제 내가 원하는 문자만 검색할수 있도록 해보자.

1. 모든 문장은 #로 시작해서 #로 끝난다는 조건이 있다. 일단 그 사이에는 어떤 문자가 있어도 상관없다.
시작과 끝을 #로 한다고 하니 #로 설정한다. 그 중간에는 우선 어떤 문자가 와도 상관없으니 아무문자와 매치 되는 .을 쓰고 0개~무한 반복을 뜻하는 *을 쓰자. 혹시 한개이상의 문자가 필요하다면 +를 사용하면 된다.
결과 : #.*#

2. #로 시작하여 공백이 나오거나 #로 끝날때까지는 영어 소문자만 가능하다고 한다. 영어 소문자 리스트에 Arrange설정을 하자. 공백이 있어도 되고 없어도 되는 경우이므로 0~무한 매치인 *를 사용한다. 있는 경우에는 2개 이상이 될수도 있음을 분명히 하자. 공백문자(스페이스, 탭등)을 뜻하는 [\s]를 사용하자. [[:space:]]와 같은 문법도 클래스 형태로 제공하므로 사용해도 된다.
결과 : #[a-z]+[\s]*#

3. 이후 나오는 문자는 변수명과 = [ , ” (공백) 등만 사용 가능하다. =는 1개나 2개만 사용가능하다는것도 잘 이해해 두자. ‘?’의 경우 반복없이 한번만 있을수도 있고 없을수도 있다는 뜻이다.
큰따옴표 안에는 아무런 제약을 받지 않는다고 한다. .*을 이용해 주면 모든 문자에 매치될수 있을것이다.
결과 : #[a-z]+[\s]*[a-z\$]+[\s]*={1,2}[\[]?[\s]*\”.*\”[\s]*[\]]?[\s]*#

4. “hello”, “world”같이 여러개가 설정 가능하다고 한다. 어떻게 해야 할까? 그룹()으로 설정하면 된다.
한개는 무조건 있어야 하는것이고 두번째부터는 없을수도 있고 여러개일수도 있다. (blahblah)*식으로 그 그룹에 정의된 단위대로 0개이상의 반복을 할수 있다.
결과 : #[a-z]+[\s]*[a-z\$]+[\s]*={1,2}[\[]?[\s]*\”.*\”([\s]*,\”.*\”)*[\s]*[\]]?[\s]*#


최종 결과 : 

#[a-z]+[\s]*[a-z\$]+[\s]*={1,2}[\[]?[\s]*\”.*\”([\s]*,\”.*\”)*[\s]*[\]]?[\s]*#

어떤가요?

심심풀이용 게임 “타자크래프트”

사용자 삽입 이미지
이럴수가. 어쩌다가 집에서 이 소스를 찾아냈다. 대학교 1학년 자바 시간에 기말 프로젝트로 만들었던 놈이다.

자바 프로그래밍이 어렵다고 생각되어 그나마 애플릿 개발이 쉬운거 같아 개발했던 놈인데 잊고 있었던 소스를 다시 만나게 되어 반갑다.

그 당시 자신있게 발표할수 있었던 장점으로는 이런것이 있었던것 같다.

1. 저글링의 기하급수적인 발업-_-;
2. 시지탱크 정확한 폭발형 데미지(주변 저글링도 피해)
3. 기하급수적으로 받는 점수가 늘어남. 버티면 버틸수록 저글링 한마리 잡는것으로 얻는 점수가 큼
4. 라이프 포인트(빨강)
5. 뉴클리어 지원(분홍)
6. 랭킹 시스템 지원
7. 쿵쿵따 버젼이라 계속하다보면 쿵쿵따 어휘가 늘음 (옛날엔 쿵쿵따 인기였다-_-; 지금은;;)

지금 다시 그 옛날의 소스를 들여다 보고 조금 놀란것이, 난 분명히 수학을 별로 못하는 놈인데 왤케 수학함수를 많이 써서 만든것일까;;;

JAVA JDK 혹은 JRE가 없으면 실행이 안될수도 있습니다;