Friday, August 18, 2006
Perl 정규식] 문자열 치환(바꾸기)/순서 변경/삭제 - s/// 치환 연산자(Substitution Operator)
펄(Perl)에서 문자열을 치환(Replace)할 때는 s/// 연산자를 사용합니다.
가령 디폴트 변수인 $_ 에, 다음과 같이
라는 문자열이 대입되어 있을 때
라고 하면
"맹구"가 "대추"로 치환됩니다.
그래서 $_ 의 값은, "안녕하세요, 대추씨!" 가 됩니다.
(아래 코드 박스를 한 번 클릭한 후, 좌우 화살표키를 누르면 좌우로 스크롤. 빠져나오려면, 코드 박스의 바깥을 클릭.)
▶▶ Perl 펄] 정규식 옵션 m s 의미 사용법, Regex 문자열 검색 치환
가령 디폴트 변수인 $_ 에, 다음과 같이
$_ = "안녕하세요, 맹구씨!";
라는 문자열이 대입되어 있을 때
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 를 붙이지 않으면, 맨 처음의 "맹구"만 "대추"로 치환되어
# 안녕하세요, 대추씨! 맹구씨! 맹구씨! 맹구씨!
# 이렇게 됨.
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
잘 배우고 감사합니다. 감사합니다 :)
도움이 되셨다니 저도 기쁩니다
^_^)
<< Home