티스토리 뷰

DEV/Perl

정규표현식(Regular Expression)

초록매실원액 2015. 12. 14. 12:58

정규표현식

  • 문자열을 추상적으로 표현하는 방법
  • 복잡한 패턴의 문자열에서 원하는 정보를 얻어낼 있는 강력한 도구

 

Perl 정규표현식

  • 정규표현식이 내장되어 지원이 완벽하다



정규표현식

(메타기호)

설명

예제

.

임의의 문자

a.ple = apple(o), alple(o), aplle(x)

|

| 기호를 기준으로 앞뒤의 값들 중의 하나 선택

Gr(a|e)y = gray or grey 하나에 매치된다

?

    • 앞의 문자를 0 or 1 반복
    • ?문자는 앞의 문자가 있거나 없는 경우를 찾을 사용
    • 복수와 단수를 구분하는 경우 많이 사용

Apples? Apple(o), apples(0)

*

    • 앞의 문자를 0 이상 반복
    • *문자가 입력된 이전의 문자가 출력이 되지 않거나 여러 출력이 되는 것을 지정

Apple* = appl(o), appleeeee(o)

+

    • 앞의 문자를 1 이상 반복
    • +문자가 입력된 이전의 문자가 1 이상 입력이 되는 것을 지정

Apple+ = appl(x), apple(o), appleeee(o)

( )

( ) 정규식내에서  패턴을 그룹화 사용

(apple)* = apple(o), appleapple(o), appleappleapple(o)

{n}

    • n 반복
    • 바로 앞의 문자를 정확히 n 반복

A.{3}e = apple(o), Abcde(o), AAAAA(x), AAAAe(o)

{n,}

    • n 이상 반복
    • 바로 앞의 문자를 n 이상 반복

Ap{2,}le = apple(o), Appple(o), Aple(x), Apble(x)

{n,m}

    • n 이상 m 이하 반복
    • 바로 앞의 문자를 n 이상 m 이하 반복

s.{3,4}ing = sleeping(o), shopping(o), swimming(o)

[ ]

    • 문자클래스
    • [ ] 안에 가능한 문자를 명시 있다.

[ 0 2 4 6 8 ] = 0, 2, 4, 8중의 하나를 찾는다

^, -

문자 클래스 안의 특수문자

-문자는 최초의 문자열과 마지막 문자열을 모두 명시

^문자 뒤에 나오는 조건을 만족하지 않는 문자를 찾는다

 

[ a - z ] = a에서 z까지의 모든 문자를 찾는다

[ ^a-z ] = a에서 z까지의 문자를 제외한 문자를 뜻한다.

 



패턴 매칭

Pattern Matching

  • 문자열의 형식이 일치하는 것을 조사
  • 패턴은 /문자로 비교하고자 하는 문자열을 감싸서 표현한다

 

문자

=~

문자열의 패턴이 일치하는 것이 있다면 참을 반환

!~

문자열의 패턴이 일치하는 것이 있을 거짓을 반환


특수문자

String Class

Comment

\w

[ 0-9a-zA-Z_]

숫자, 영문자(, 소문자),_언더바

\W

[^0-9a-zA-Z_]

숫자, 영문자(, 소문자),_언더바) 이외

\s

[\t\n\r\f]

공배(스페이스, , 개행)

\S

[^\t\n\r\f]

공백 이외의 숫자

\d

[ 0-9 ]

숫자

\D

[^[0-9]

숫자 이외의 문자


특수문자

설명

$&

매치하는 문자열 전체

$`(Grave Accent)

매치하는 부분보다 앞에 있는 문자열

$`(Single Quotation)

매치하는 부분보다 뒤에 있는 문자열

$1, $2, $3 ..

첫번째, 번째, 그룹에 매치하는 문자열

$+

마지막 그룹에 매치하는 문자열

 



정규 표현식을 사용하여 문자열을 검색

  • 매치연산자를 이용하여 검색
  • 복수의 옵션을 설정하는 것도 가능

 

/g

    • 매치 포인터를 초기화 하지 않음
    • 전역 매치 문자열의 마지막까지 검색 수행

/i

대소문자를 구별하지 않음

/x

공백을 무시하며 주석을 허용

/m

^ $ \n 다음에도 매치되도록

/s

.연산자가 \n 인식할수 있게해줌


/m 옵션중 세부적인 연산자

연산자

^or \A

스트링의 시작에서만 일치시킨다.

$ or \Z

스트링의 끝에서만 일치시킨다

\b

단어 단위로만 일치시킨다

\B

단어 안에서 일치시킨다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
 
while(1){
 
print "이름을 입력하세요(5글자) : 
";chomp($name=<>);
 
$a=$name =/^[^\d~!@#$%^&*()_+]{1,10}$/;
 
print $len;
 
if($a){
 
print "이름을
입력했습니다\n";                        last;
 
}else{
 
print "양식이 올바르지
않습니다!.\n";                
 
}
 
}
 
while(1){
 
print "전화 번호를 입력하세요(숫자만 - 제외 ) : ";chomp($num=<>);
 
$a=$num =/^01[0,1,6,7,8,9][0-9]{3,4}[0-9]{4}$/;
 
if($a){
 
print "전화번호를
입력했습니다.\n";                        last;
 
}else{
 
print "전화번호 정보가 올바르지 않습니다!.\n";
 
}
 
}
 
while(1){
 
print "이메일을 입력해라 : ";chomp($mail=<>);;
 
$a=$mail =/^\w{1,}@[a-zA-Z]+(\.[a-zA-Z]+){1,2}$/;
 
if($a){
 
print "이메일 정보를
입력했습니다.\n";                        last;
 
}else{
 
print "이메일 정보가 올바르지
않습니다.\n";                
 
}        
 
}
 
print
"<< 입력된 정보 >>\n";
 
print
"이름 :\t$name\nh.p  :\t$num\nmail
:\t$mail\n"
 
 
cs




 

'DEV > Perl' 카테고리의 다른 글

FILE  (0) 2015.12.23
OOP  (0) 2015.12.21
Package  (0) 2015.12.11
Subroutine (=함수)  (0) 2015.12.11
제어문  (0) 2015.12.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함