컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Friday, August 18, 2006

Perl 정규식] 문자열 치환(바꾸기)/순서 변경/삭제 - s/// 치환 연산자(Substitution Operator)


펄(Perl)에서 문자열을 치환(Replace)할 때는 s/// 연산자를 사용합니다.

가령 디폴트 변수인 $_ 에, 다음과 같이
$_ = "안녕하세요, 맹구씨!";

라는 문자열이 대입되어 있을 때

s/맹구/대추/;

라고 하면

"맹구"가 "대추"로 치환됩니다.

그래서 $_ 의 값은, "안녕하세요, 대추씨!" 가 됩니다.



Perl(펄)에서, 문자열 치환(Replace)하는 각종 예제


(아래 코드 박스를 한 번 클릭한 후, 좌우 화살표키를 누르면 좌우로 스크롤. 빠져나오려면, 코드 박스의 바깥을 클릭.)
#!/usr/bin/perl
use strict; use warnings;


### 가장 간단한 문자열 치환 ###

  $_ = "안녕하세요, 맹구씨!";
  s/맹구/대추/;

  print "$_\n";
# 결과: 안녕하세요, 대추씨!




### 디폴트 변수($_)가 아닌 일반 변수에 든 문자열 치환 ###

  my $temp = "안녕하세요, 맹구씨!";
  $temp =~ s/하세요/히 가세요/;

  print "$temp\n";
# 결과: 안녕히 가세요, 맹구씨!
# "=~" 를 사용해 특정 변수를 Binding 해주지 않으면, 디폴트 변수인 $_ 의 내용을 치환



### 문자열 추가/삽입 ###

  $_ = "안녕하세요, 맹구씨!";
  s/(맹구)/$1씨와 대추/;

  print "$_\n";
# 결과: 안녕하세요, 맹구씨와 대추씨!




### 순서 바꾸기 묘기(?)###

  $_ = "안녕하세요, 맹구씨!";
  s/(안녕하세요).*(맹구씨)/$2, $1/;

  print "$_\n";
# 결과: 맹구씨, 안녕하세요!
# $1 은, 첫번째 소괄호 "()" 속의 정규식에 매치되는 부분을 메모리에 저장하는 변수.
# $2 는 두번째 소괄호에서 매치되는 부분
# 복잡한 치환 작업을 할 때 사용하는 것입니다.
# 위의 경우, $1 은 (안녕하세요) 이고, $2 는 (맹구씨) 입니다.




### 문자열 일부분만 삭제 ###

  $_ = "안녕하세요, 맹구씨!";
  s/맹구//;

  print "$_\n";
# 결과: 안녕하세요, 씨!




### 전역 문자열 치환 ###

  $_ = "안녕하세요, 맹구씨! 맹구씨! 맹구씨! 맹구씨!";
  s/맹구/대추/g;

  print "$_\n";
# 결과: 안녕하세요, 대추씨! 대추씨! 대추씨! 대추씨!
# / 뒤에 g 를 붙이지 않으면, 맨 처음의 "맹구"만 "대추"로 치환되어
# 안녕하세요, 대추씨! 맹구씨! 맹구씨! 맹구씨!
# 이렇게 됨.



▶▶ Perl 펄] 정규식 옵션 m s 의미 사용법, Regex 문자열 검색 치환




tag: perl
Perl | 펄
tag: regex
정규식 | 정규표현식 | Regex | Regular Expression

2 Comments:
At March 4, 2007 at 2:34 PM, Anonymous Anonymous said...

잘 배우고 감사합니다. 감사합니다 :)

 
At March 5, 2007 at 8:57 AM, Blogger mwultong said...

도움이 되셨다니 저도 기쁩니다

^_^)

 

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top