정규표현식

프로그래밍/BASH SHELL|2015. 1. 27. 10:03
반응형

2.1 정규표현식

2.1.1 정의와 용례 
정규표현식 : 검색을 위해 사용되는 여러 문자들의 패턴. 
2.1.2 정규표현식 메타문자
vi,ex,grep,egrep,sed,awk 등의 모든 버전에서 사용 가능.
메타문자
기  능
사용 예
사용 예 설명
^
행의 시작 지시자
/^love/
love로 시작하는 모든 행과 대응
$
행의 끝 지시자
/love$/
love로 끝나는 모든 행과 대응
.
하나의 문자와 대응
/l..e/
l 다음에 두 글자가 나오고 e로 끝나는 문자열을 포함하는 행과 대응
*
선행 문자와 같은 문자의 0개 혹은 임의 개수와 대응
/*love/
임의 개수의 공백 문자 후에 love로 끝나는 문자열을 포함한 행과 대응
[]
[] 사이의 문자 집합 중 하나와 대응
/[Ll]ove/
love나 Love를 포함하는 행과 대응
[x-y]
[] 사이의 문자범위내에의 한 문자와 대응
[A-Z]ove/
A부터 Z까지 한 문자가 ove로 끝나는 경우와 대응
[^ ]
문자집합에 속하지 않는 한 문자와 대응
/[^A-Z]/
A와 Z 사이의 범위에 포함되지 않는 한 문자와 대응
메타문자로 사용하고 싶지 않은 경우
/love./
love가 마침표(.)로 끝나는 경우와 대응.
일반적으로 .는 임의의 한 문자를 의미
<
단어의 시작 지시자
/<love/
love로 시작하는 단어를 포함하는 행과 대응(vi,grep에서 지원)
>
단어의 끝 지시자
/love>/
love로 끝나는 단어를 포함하는 행과 대응(vi,grep에서 지원)
(..)
다음 사용을 위해 태그를 붙인다.
/(lov)able1er/
9개 태그를 쓸 수 있다. 왼쪽부터 순서대로 태그번호가 매겨진다. 예를 들어, 패턴 lov는 태크 1에 저장되고, 뒤에는 1로써 태그 값을 사용할 수 있다. 왼쪽 예제에서 검색 패턴은 lovable에 lover가 붙어 있는 문자열이 된다.(sed,vi,grep에서 사용 가능.)
x{m}
문자 x를 m번 반복한다.
o{5,10}
문자 o가 5회에서 10회 사이의 횟수로 연속적으로 나타나는 문자열과 대응
x{m,}.
적어도 m번 반복한다.
 
 
x{m,n}.
n회 이하 m회 이상 반복한다.
 
 

정규표현식 사용 예
사용 예
설        명
/love/
정규표현식은 love이다. 패턴 love는 자체로 검색 대상이 될 수도 있고, 또는 lovely,gloves,clover 등과 같이 다른 단어의 일부가 될 수도 있다.
/^love/
여기서 ^는 행의 시작 지시자라 한다. vi는 love로 시작하는 행만 찾는다. 즉, love가 행의 첫 문자열이어야 한다. love 앞에 빈 칸이나 다른 문자가 오면 안 된다.
/love$/
$는 행의 끝 지시자라 한다. vi는 love로 끝나는 행만 찾는다. 즉, love가 행을 끝내는 단어의 제일 마지막 부분의 문자열이고, love가 끝나면 새로운 행이 시작되어야 한다.
/l.ve/
.는 개행문자를 제외한 어떤 문자와도 대응된다. vi는 l 다음에 임의의 한 문자가 나오고 ve가 뒤따르는 문자열을 찾는다. 예를 들어 love나 live를 찾는다.
/o*ve/
*는 0개를 포함한 임의 개수의 선행 문자와 대응된다. 즉, 어떤 문자 다음에 붙어 나와서 그 문자에 대해서만 제어를 담당한다. 따라서 o와 ve 사이에 o가 한 번도 오지 않을 수도 있고 여러번 올 수도 있다 . 예를 들어, love,loooove,lve 등을 찾아 준다.
/[Ll]ove/
[]는 괄호 안의 문자들 중의 하나와 일치하면 찾는다. vi는 ove 앞에 대문자 L이나 소문자 l이 오는 단어들을 찾아준다.
/ove[a-z]/
ove 다음에 아스키코드 상에서 a와 z 사이의 문자가 오는 문자열을 찾아준다. 문자 범위는 아스키 코드를 사용하기 때문에 [z-a]처럼 나타낼 수는 없다.
/ove[^a-zA-Z0-9]/
[]안의 ^는 부정을 의미하는 메타문자이다. ove 다음에 a와 z, A와 Z 및 0과 9 사이에 오지 않는 문자를 가진 문자열을 찾는다. 예를 들어, ove 다음에 쉼표,스페이스,마침표 등 지정된 범위 밖의 문자들이 나오는 문자열을 찾는다.
:1,$s/tom/David/g
첫 번째 행에서 파일의 끝까지 나와 있는 모든 tom을 찾아 David로 바꿔라.
:1,$s/<[Tt]om>/David/g
첫 번째 행에서 파일의 끝까지 나와 있는 모든 tom 이나 Tom을 찾아 David로 바꿔라.
s: 치환하라.      g: 치환이 전 범위에서 일어나게 하라.

2.2 정규표현식 메타문자의 조합

사용 예
사용 예
설    명
/^[A-Z]..$/
행의 처음에 대문자가 하나 나오고, 다음에 임의의 두 문자가 나오며, 연이어 개행문자가 오는 문자열을 찾는다.
/^[A-Z][a-z ]*3[0-5]/
행의 처음에 대문자가 하나 나오고, 소문자나 스페이스가 0번 또는 여러번 반복되며, 이어서 3이 나오고, 마지막으로 0과 5 사이의 숫자가 오는 문자열을 찾는다.
/[a-z]*./
임의의 소문자가 0번 또는 여러번 이어지다가 마침표로 끝나는 문자열을 찾는다.
/^ *[A-Z][a-z][a-z]$/
행의 처음에 공백문자(탭은 공백문자로 취급되지 않는다)가 0번 또는 여러번 나오고, 이어서 대문자 하나와 두 개의 소문자가 그리고 마지막으로 개행문자가 오는 문자열을 찾는다.
/^[A-Za-z]*[^,][A-Za-z]*$/
행의 처음에 대문자나 소문자 하나가 0번 또는 여러번 나오다가 쉼표가 아닌 문자가 오며, 이어서 다시 대문자나 소문자 하나가 0번 또는 여러번 나오다가 마지막으로 개행문자가 오는 문자열을 찾는다.



[출처] 정규표현식 |작성자 박신양

반응형

'프로그래밍 > BASH SHELL' 카테고리의 다른 글

bash 프롬프트 howto  (0) 2015.01.27
grep 계열 명령어  (0) 2015.01.27
쉘 문법  (0) 2015.01.27
정규식 이해  (0) 2015.01.27
쉘 명령 기초  (0) 2015.01.27

댓글()