728x90
반응형

지난 번에 11 가지의 간단한 리눅스 정규표현식을 알아보고 직접 사용해봤다.
이번에는 사용해보지 않은 다른 정규 표현식들을 사용해보고 정리해보려고 한다.


정규 표현식 요약 정리

[문자1]|[문자2] 문자1 또는(or) 문자2 가 포함된 문자열
[문자]{n} 문자를 n 번 반복하는 문자열
[문자]{n,} 문자를 최소 n 번 이상 반복하는 문자열
[문자]{m,n} 문자를 최소 m 번 이상 n 번 이하 반복하는 문자열
[0-9], [a-z], [A-Z] 0부터 9까지, a 부터 z 까지, A 부터 Z 까지의 범위를 나타냄

이번에 정규 표현식을 사용해보기 위해서 텍스트 파일을 하나 만들어보았다.
저번에 사용했던 텍스트 파일에서 살짝 추가했다.

$ cat example.txt 
Hello
world
Linux
shell
script
name
jaynam
@tistory.com
regular
expression
under_bar
space bar
tab	tab
123
456
789
49.24%
polky0421
010-4230-0303
010-9948-4948
010-324-2344
532_4324342341_3243141
No.123
No.456
Apple
Banana
Coffee

 

2개 이상의 표현식을 동시에 사용할 수 있는 표현식 ( '또는(or)' 의 의미로 사용됨 ) : 파이프( | )

2개 이상의 표현식을 동시에 사용할 때 '또는' 의 의미로 사용되는 파이프라는 것을 사용한다.
일반적으로 조건문에서 OR 의 의미로 사용하곤 하는데 정규표현식에서도 마찬가지로 또는 이라는 의미로 표현된다.

예시1 ) a 또는 b 가 포함된 문자열

$ cat example.txt | grep "a\|b"
name
jaynam
regular
under_bar
space bar
tab	tab
Banana

파이프 앞에 역슬래시(\) 를 사용하는 이유는 메타문자인 파이프를 표현하기 위해서 사용했다.

예시2 ) 숫자 0 또는 a 가 포함된 문자열

$ cat example.txt | grep "0\|a" 
name
jaynam
regular
under_bar
space bar
tab	tab
polky0421
010-4230-0303
010-9948-4948
010-324-2344
Banana

정말 다른 2가지 이상의 조건을 통해 원하는 문자열을 구하고 싶을 때 정말 많이 사용할 수 있다고 생각한다.

 

일정 횟수만큼 반복하는 문자열을 나타내는 표현식 : [문자]{n}

원하는 문자를 일정 횟수만큼 반복하는 문자열을 찾고 싶을 때 원하는 문자 뒤에 중괄호 { } 를 사용해 안에 횟수를 적어준다.
이렇게 말로 설명하려고 하니 잘 이해가 되지 않으니까 직접 사용해본다.

예시1 ) 문자 e 를 2번 반복하는 문자열

$ cat example.txt | grep "e\{2\}"
Coffee

추가로 지금 사용한 표현식을 더 구체적으로 사용해볼 수도 있다.

문자를 최소 m 번 이상 반복하는 문자열 : [문자]{n,}

예시1 ) 알파벳 e 를 최소 1번 이상 반복하는 문자열

$ cat example.txt | grep "e\{1,\}"
Hello
shell
name
regular
expression
under_bar
space bar
Apple
Coffee

문자를 최소 m 번 이상 n 번 이하 반복하는 문자열 : [문자]{m,n}

예시1 ) 알파벳 l 을 1번 이상 2번 이하로 반복하는 문자열

$ cat example.txt | grep "l\{1,2\}"
Hello
world
shell
regular
polky0421
Apple

 

숫자, 알파벳 대소문자의 범위를 나타내는 표현식 : [0-9] , [a-z] , [A-Z]

숫자나 알파벳 대소문자를 구분하는 정규 표현식에는 \d 또는 \w 를 통해서 표현할 수 있는데
이번에 사용해본 표현식은 임의로 범위를 지정해줄 수 있다.
예를 들어, 0부터 5까지의 숫자만 가져오거나 a부터 f 까지의 알파벳 소문자만 가져오거나 할 수 있다.

예시1 ) 7 부터 9 까지의 숫자를 포함하는 문자열

$ cat example.txt | grep "[7-9]"                            
789
49.24%
010-9948-4948

예시2 ) g 부터 i 까지의 알파벳 소문자를 포함하는 문자열

$ cat example.txt | grep "[g-i]"
Linux
shell
script
@tistory.com
regular
expression

예시3 ) 파이프(|)를 통해 예시1 과 예시2 를 동시에 사용해보기

$ cat example.txt | grep "[7-9]\|[g-i]"
Linux
shell
script
@tistory.com
regular
expression
789
49.24%
010-9948-4948

예시4 ) 핸드폰 번호 검색해보기

보통 핸드폰 번호는 '숫자3자리-숫자4자리-숫자4자리' 로 구성되어있고
앞에 숫자 3자리에는 최근에 대부분의 핸드폰 번호가 010 으로 시작되기 때문에 앞자리는 010 으로 시작되는 핸드폰 번호만 찾아봤다.

$ cat example.txt | grep "^010-[0-9]\{4\}-[0-9]\{4\}"
010-4230-0303
010-9948-4948

010 으로 시작하는 번호를 찾으려고 문자열의 시작을 나타내는 표현식 ^ 를 사용했고
숫자 사이사이에 - 라는 문자열을 넣어주고
중간 번호 4자리는 [0-9]까지의 범위를 가지는 숫자를 4번 반복하는 표현을 사용하고
마지막 번호 4자리는 [0-9]까지의 범위를 가지는 숫자를 4번 반복하는 표현을 사용해봤다.
이렇게 내가 사용한 표현식 말고도 다른 방법으로도 찾을 수 있기도 하지만
원하는 표현식을 사용해서 원하는 문자열을 찾아보면 좋을 것 같다.

 

정리

저번에 사용해보지 않았던 정규 표현식을 사용해봤는데
다음에 정규 표현식을 공부할 때 어떤 상황을 만들어서 원하는 문자열을 찾아보는 식으로 사용해봐야겠다.
이렇게 사용해보면서 정규 표현식을 하나씩 사용해보다 보니 정말 내가 실무에서 자주 사용할까 하는 의문이 들었다.
그래서 직접 어떤 상황에서 원하는 결과를 가져와야할 때 정규 표현식을 사용해서 어떻게 결과를 가져올 수 있을 지 생각해봐야겠다.

728x90
반응형
복사했습니다!