주간 베스트 월간 베스트 3개월 베스트 베스트 게시물
꽃배달 한국, 중국 전지역배송

정규식으로 문자열 바꾸기

SOLIDH | 2009.05.23 21:41:39 댓글: 0 조회: 3732 추천: 0
분류웹 프로그래밍 https://life.moyiza.kr/itstudy/1759405

제가 아는 동생중에 정규식 이란 녀석이 있는데… 오늘은 그 규식이에 대해서 알아보도록 하겠습니다.

   

AS3.0 이 등장하면서 여러모로 복잡해지고 피곤해진 ActionScript 이지만서도, 그만큼 빠른 성능과 새로운 기능들이란 장점을 가져다 주었죠. 인생이 아름다워라~ 할 수 있도록 추가된 기능중에서 단연 돋보이는 규식이 입니다.

   

정규식이란?

영 어로는 Regular expressions 라고 씁니다. 보통 RegEx 라고 줄여서 쓰곤 하죠. "정규 표현식" 이란 말의 줄임말로 정규식이라고 쓰던데, 왜 정규 표현식인지는 저도 잘 모르겠습니다. 주된 기능은 문자열에서 패턴을 찾거나, 찾아서 바꾸거나 하는 용도로서 사용됩니다.

   

머따 쓰는 물건?

그러니깐 간단한 사용례를 들자면 ABCDEFG 라는 문자열에서 CDE 를 찾아서 XYZ 로 바꾸고 싶을때 사용합니다. 정규식 치환을 사용해서 해당문자열을 바꾸면 ABCDEFG -> ABXYZFG 가 되겠죠.

   

ActionScript 의 정규식을 공부할때 참고자료들

일 단 플래시에 내장된 ActionScript3.0 레퍼런스 만으로도 충분히 공부가 가능하지만, 좀 더 사용례를 정확히 알고 싶거나, 여러가지 참고할만한 예제가 필요한 경우엔 Javascript 의 정규식을 찾아봐도 됩니다. Javascript 의 정규식과 같은 구성을 가지고 있거든요.

   

규식이로 문자열을 바꿔BoA요. 


뭐 일단 이렇게 하면 "가크크크크라마바사" 가 trace() 되게 됩니다.

   

간단하게 살펴보면

Test 라는 변수는 일단 String 타입을 가진 변수입니다. 문자열 이란거죠…

그리고 저기에 쓰인 replace 는 String 타입의 객체가 가질 수 있는 메서드 중에서 하나입니다.

레퍼런스를 열어보면 

요렇게 나와있습니다.

   

Replace 메서드에 대해서 알아보자면 (pattern , repl) 로 되어있는데요.

첫번째 pattern 은 정규식 패턴을 넣어주면 되구요.

두번째 repl 엔 바꿔넣을 문자를 넣어주면 됩니다.

   

(/나다/ , "크크크크") 는 "나다" 라는 문자를 "크크크크" 로 바꿔주세요~ 라는 뜻이죠.

   

위의 내용을 좀 더 보기 쉽게 정리하면 아래와 같습니다. 

여러 개의 문자 바꾸기

위와 같이 했을때


요렇게 "나다" 가 여러 개 들어갔을때는


뭐가 다른지 눈을 크게 뜨고 찾아보세요…

하여튼 위처럼 바꾸면 



요렇게 정상적으로 출력됩니다.

/g 옵션은 global 이라는 뜻이라고 하네요…

   

저 같은 경우엔 딱히 정규식을 활용할 만한 일이 별로 없어서 걍 /g 옵션을 붙여서

문자열 바꾸기 기능으로 활용할 때가 많습니다.

아직 플래시에서는 딱히 쓸일을 찾을수가 없었구요.

Javascript 에서 외부에서 불러온 HTML 구문중에 쓸데없는 size="16" 이란 것들이 전체적으로 잔뜩 붙어있다 했을때 replace(/size="16"/g , "") 라는 문구를 통해서 싸그리 없애주는거죠. PHP 에서 간단하게 처리할 수 있는것이지만, 왠지 모르게 서버 리소스를 쓰기 보다는 클라이언트 리소스를 쓰고 싶은 심뽀 라고나 할까요… ㅡ ㄴ ㅡ;;; 내건 아깝고, 보는 사람건 별로 안아깝더라구요…

   

뭐 하여튼… 잡소리고… 위처럼 해주면 전체적으로 문자열을 다 바꿀 수 있습니다.

   

   

좀 더 강력하게 문자열 바꿔보기

예를 들어서 이렇게 바꿔야 할 때가 있습니다. 태그 수정의 경우 "나다" 를 "나다크크크" 로 바꿔야 할 경우 말이죠.

"나다"+"크크크크" 로 원본 문자열을 활용한 채로 "크크크크" 를 덧붙여야 하는 경우인데요.

이 경우엔 아래처럼 처리 할 수 있습니다. 




위와 같은 경우에 repl 에 $& 가 들어가 있는데요. 이 $& 는 검색된 "나다" 를 뜻하게 됩니다.

그렇기 때문에 "$&크크크크" 로 하면 아래와 같이 



요렇게 나오게 되죠.

   

   

   

좀 더 복잡하게 들어가서 "나다라마" 나 "나돠라마" 를 "나다크크크마" 나 "나돠크크크마" 로 바꿔야 할 경우도 생깁니다. (예제처럼 괴상한 단어를 찾을일은 없겠지만요…)

   

그럴 경우엔 $& 의 단수 형태가 아닌, $1, $2 처럼 $n 의 형태로 찾을 수 있습니다. 



요런 코드로 바꾸면




요런 결과가 나오지요…

   

저 위에 있는 (S) 에서 S 는 "공백이 아닌 문자" 라는 뜻이구요.

() 괄호 같은 경우엔 여러 개의 정규식 패턴을 잡아내기 위해서 그룹화 해주는 것입니다.

첫번째 괄호는 $1 로 치환되고, 두번째 괄호는 $2 로 치환됩니다.

   

이런 타입의 경우가 바로 html 태그등을 수정할 때 유용하게 쓰입니다. 


이렇게 써주면 

요렇게 모든 태그의 size 속성을 싸그리 지울수 있습니다. 주로, 반복작업이 많아서 일일히 수정하기 귀찮을때 사용합니다.

   

근데… 정규식이 점점 외계어가 되어가죠? 참… 이럴때 난감해지죠. 저도 처음에 토하는줄 알았습니다.

   

일단 위의 내용만 간단하게 설명드리자면

" 는 정규식안에 " 를 바로 쓸수 없기 때문에 (특수용도 문자로서 " 때문) 이건 특수용의 " 가 아닌, 문자로서의 " 다… 라는 뜻으로 앞에 를 붙여준 것입니다. 그래서 "" 는 정규식 패턴에서 "" 로 인식하게 되죠.

그리고, () 그룹 안에 있는 d 는 숫자를 의미하구요. {1,3} 은 반복을 의미합니다.

   

반복에 대해서 설명하자면 일단 아래를 봐야 할 것 같네요. 



요렇게 써주면


요렇게 되고…


요렇게 써주면


요렇게 됩니다… ㅡ ㄴ ㅡ;;;

   

즉… d 는 1자리의 숫자를 이야기 하게 되고, dd 는 2자리의 숫자를 이야기 하게 됩니다.

즉… 이런 패턴 때문에 반복이 필요한데요.

   

{3} 는 세번 반복된 즉… d{3} 은 001~999 까지의 숫자열을 찾고,

{3,} 는 세번 이상 반복된 즉… d{3,} 는 001~999 이상의 숫자열을 찾고,

{1~3} 은 한번 반복부터, 세번 반복까지… 즉… 1~999 까지의 숫자열을 찾게 됩니다.

   

점점 아스트랄 해지죠?

   

정 규식을 공부하다 보며 "내 마음은 안드로메다로~" 라는 노래가 입안에서 마구 울려퍼지게 됩니다. 정규식은 꽤 어려운 내용중에서 하나이기 때문에 익숙해지려면 많은 공부가 필요하거든요. 주로 UI 적인 이슈를 다루기 때문에 문자열 데이터 가공을 직접적으로 다룰일이 별로 없는 클라이언트 스크립트 쪽에서야 별 쓰잘데기 없는 내용이기도 하지만, PHP 같은 쪽 커뮤니티에 들어가면 이게 삼각함수처럼 그쪽 사람들의 머리를 쪼개는 역할을 하곤 합니다. 그러니깐… 어려운 내용이라구요… 굉장히…;;;

   

   

좀 더 자세한 내용은 알아서...

이 이상 깊게 들어가봤자 지루해지기만 할테고, 공부할 사람들은 레퍼런스 뒤지면서 알아서 열심히 공부할테니 더 이상의 내용은 적지 않겠습니다. 원래 시작할땐 단순 문자열 치환인 /나다/ 까지만 하려고 했는데, 몇가지 사족을 덧붙였네요. (내가 몰라서 안쓰는게 아니야! ~ㅜ ㅁ ㅜ~ 진짜라니깐!)

   

정 규식이 어디에 쓰일수 있을까? 를 생각하면 좀 머리 아파지는 문제이기도 하지만, 만일 개발자가 CodeHighlighter 같은 기능이나, 플래시로 TextEditor, 불량단어 필터링 같은걸 만든다고 생각했을때는 replace 에 좀 더 세밀한 조정이 필요하기 때문에 알아둬야 하는 내용입니다. 사실… 보통 UI 나 컨텐츠를 만들때는 별 의미 없어요… ' ㅡ 'a (라고 생각하는 1)

   

뭐 좀 더 자세한 내용은 굉장히 피곤하게 적혀있긴 하지만, (잘 정리가 안되어서 공부하기 피곤한) AS3.0 레퍼런스를 보시던가, 아니면, AS3.0 에서 사용하는 정규식과 같은 방식인 Javascript 의 정규식을 검색해서 찾아보시던가 하시면 될것 같습니다.

   

   

   

그럼 마지막으로 광고를 한 편 띄우면서 전 이만… 

 

   

   

   

   

기쁨주고 돈받는 쎈이 여러분 곁에 있습니다!

그림 그려줄 사람이 필요하신가요! 액션스크립트 개발자가 필요하신가요! 직원 더 이상 야근 시키기 미안하신가요! 그렇다면 주저말고 http://www.ssen.name/portfolio/ 로 들어오셔서 슬쩍~ 한번 살펴보신 담에 전화 좀 주십시오~ 요새 컴퓨터 새로 사고, 모니터까지 좋은거 사서 상당히 쪼들립니다! 콩나물에 두부반찬만 먹으면서 장만한 초호화 장비로 재무장한 재택, 파견 가리지 않는 3만 9천 9백원 보단 좀 비싸지만, 건강검진 결과 세달 논스탑 야근 시켜도 잘 굴러가는 프리랜서 쎈이 여러분 곁에 있습니다! 빰빠라밤~!



출처: ssen님레시피
http://ssen.name/zb/1080

추천 (0) 선물 (0명)
첨부파일 다운로드 ( 18 )
100707_0417_1.png | 6.4KB / 0 Download
100707_0417_2.png | 9.7KB / 0 Download
100707_0417_3.png | 6.8KB / 0 Download
100707_0417_4.png | 8.5KB / 0 Download
100707_0417_5.png | 3.3KB / 0 Download
100707_0417_6.png | 8.4KB / 0 Download
100707_0417_7.png | 3.5KB / 0 Download
100707_0417_8.png | 8.5KB / 0 Download
100707_0417_9.png | 3.4KB / 0 Download
100707_0417_10.png | 10.0KB / 0 Download
100707_0417_11.png | 3.6KB / 0 Download
100707_0417_12.png | 9.2KB / 0 Download
100707_0417_13.png | 3.4KB / 0 Download
100707_0417_14.png | 9.1KB / 0 Download
100707_0417_15.png | 3.5KB / 0 Download
100707_0417_16.png | 9.2KB / 0 Download
100707_0417_17.png | 3.5KB / 0 Download
100707_0417_18.png | 208.8KB / 0 Download
IP: ♡.220.♡.237
3,006 개의 글이 있습니다.
제목 글쓴이 날짜 조회
관리자
2003-09-20
11942
관리자
2003-09-20
11489
관리자
2003-09-20
20624
지구인
2010-08-27
19416
지구인
2009-09-07
13737
SOLIDH
2010-01-29
15694
엔죠라이프
2004-10-07
16787
SOLIDH
2009-05-24
4125
SOLIDH
2009-05-23
2230
SOLIDH
2009-05-23
3732
나나
2009-05-18
14332
수병아리
2009-05-18
3092
SOLIDH
2009-04-29
1566
SOLIDH
2009-04-27
1161
SOLIDH
2009-04-26
1318
sinanstn
2009-04-24
2863
뽀글이예용
2009-04-22
2922
SOLIDH
2009-04-20
2099
Exception
2009-04-17
2981
Exception
2009-04-17
2015
Exception
2009-04-17
2880
Exception
2009-04-15
2276
고수고수
2009-04-15
4701
고수고수
2009-04-15
4007
아시오페아
2009-04-01
3764
나키
2009-03-31
6038
Ora
2009-03-30
2206
Ora
2009-03-27
4583
모이자 모바일