2024-06-21
This commit is contained in:
87
Writerside/topics/Regular-Expression.md
Normal file
87
Writerside/topics/Regular-Expression.md
Normal file
@@ -0,0 +1,87 @@
|
||||
# 정규표현식
|
||||
|
||||
- m//
|
||||
- s///
|
||||
- tr///
|
||||
|
||||
## 일치
|
||||
|
||||
문자열이 정규표현식과 일치하는지 여부를 테스트하려면, `=~` 연산자를 사용합니다. 일치하는 경우에 true가 됩니다.
|
||||
|
||||
```perl
|
||||
my $str = "Hello, World.";
|
||||
if ($str =~ /lo/){
|
||||
print "matches.\n";
|
||||
} else {
|
||||
print "not matches.\n";
|
||||
}
|
||||
```
|
||||
|
||||
일치하지 않는 경우를 판단하려면, `!~` 연산자를 사용합니다.
|
||||
|
||||
```perl
|
||||
my @array = ('Charlie', 'Steve', 'Jane');
|
||||
for (@array){
|
||||
print "$_\n" if ($_ !~ /an/);
|
||||
}
|
||||
```
|
||||
|
||||
정규표현식에 '/'가 포함된 경우에는 이스케잎 처리하거나, 또는 문자열 앞에 `m`을 붙여 정규표현식임을 나타낼 수도 있습니다.
|
||||
|
||||
```perl
|
||||
print "$_\n" if ($_ =~ m"an");
|
||||
```
|
||||
|
||||
정규표현식 뒤에 `i`를 붙이면 대소문자를 구분하지 않습니다.
|
||||
|
||||
```perl
|
||||
print "$_\n" if ($_ =~ /an/i);
|
||||
```
|
||||
|
||||
## 그룹
|
||||
|
||||
일치된 그룹은 특수 변수인 `$1`, `$2` 등을 통해서 사용할 수 있습니다.
|
||||
|
||||
```perl
|
||||
my @array = (
|
||||
"Charlie's phone number is 010-1234-5678.",
|
||||
"010-9876-5432 is a phone number of Steve.",
|
||||
"To call Jane, press 010-5555-1234.");
|
||||
for (@array){
|
||||
print "$1\n" if ($_ =~ /(\d{3}-\d{4}-\d{4})/);
|
||||
}
|
||||
```
|
||||
|
||||
## 치환
|
||||
|
||||
`s/정규표현식/새로운문자열/` 형식의 문법을 사용해서 일치되는 문자열을 다른 문자열로 치환할 수 있습니다. 처음으로 일치된 문자열이 새로운 문자열로 치환됩니다. 모든 일치된 문자열에 대해서 치환하려면 정규표현식 맨 끝에 `g`를 붙입니다. 치환된 문자열의 개수가 반환됩니다.
|
||||
|
||||
```perl
|
||||
my $var = 'new work city';
|
||||
$var =~ s/new work/New York/;
|
||||
|
||||
print "$var\n";
|
||||
```
|
||||
|
||||
```perl
|
||||
my $var = 'This dog is my dog, not your dog.';
|
||||
$var =~ s/dog/duck/g;
|
||||
|
||||
print "$var\n";
|
||||
```
|
||||
|
||||
```perl
|
||||
my $var = 'This dog is my dog, not your dog.';
|
||||
my $count = ($var =~ s/dog/duck/g); # 치환된 문자열 개수를 반환
|
||||
|
||||
print "$var\n";
|
||||
```
|
||||
|
||||
## 문자 단위 변환
|
||||
|
||||
`tr///`는 어떤 문자를 다른 문자로 바꿀 때 사용됩니다. 문자 단위로 적용됩니다.
|
||||
|
||||
```perl
|
||||
$var =~ tr/d,/D./;
|
||||
# 'd'는 'D'로, ','는 '.'으로 바꿉니다.
|
||||
```
|
||||
Reference in New Issue
Block a user