지난 글에서 예고했던대로 오늘은 STRMATCH라는 함수에 대하여 알아보겠습니다.
7. STRMATCH
이 함수는 그 이름에서 알 수 있듯이 대상 문자열을 비교 문자열과 비교하여 일치하는가 여부를 판단하여 알려주는 역할을 합니다. 좀 더 넓은 의미로 생각한다면, 대상 문자열내에 내가 지정한 비교 문자열이 포함되는가 아닌가의 여부를 확인하는 역할이라고도 볼 수 있습니다. 가장 기본적인 사용예제는 다음과 같습니다.
IDL> str = 'Future'
IDL> result = STRMATCH(str, 'Future')
IDL> PRINT, result
1
여기서 대상 문자열은 'Future'라는 단어이고 비교 문자열도 'Future'입니다. STRMATCH 함수의 첫번째 인자가 대상 문자열, 두번째 인자가 비교 문자열이 됩니다. 여기서는 대상 문자열과 비교 문자열이 서로 같으므로, 함수를 적용한 결과는 1(일치함)이 됩니다. 물론 다음과 같이 비교 문자열이 'future'가 될 경우에는 결과가 달라집니다.
IDL> str = 'Future'
IDL> result = STRMATCH(str, 'future')
IDL> PRINT, result
0
여기서는 서로 일치하지 않으므로 결과는 0(불일치)이 됩니다. STRMATCH 함수는 기본적으로 대소문자 구분을 합니다. 만약 대소문자를 구분하지 않고 비교하게 하려면 FOLD_CASE라는 키워드를 사용하면 됩니다.
IDL> str = 'Future'
IDL> result = STRMATCH(str, 'future', /FOLD_CASE)
IDL> PRINT, result
1
IDL> str = 'Future'
IDL> result = STRMATCH(str, '*tur*')
IDL> PRINT, result
1
여기서 사용된 비교 문자열을 보면 가운데에서는 tur이 존재하되 그 앞뒤로는 임의의 문자가 임의의 갯수만큼 존재해도 상관이 없다는 의미입니다. 따라서 그 결과는 1(일치함)로 얻어진 것입니다. 다음과 같은 경우들은 모두 일치한다는 결과를 주는 경우들입니다.
IDL> result = STRMATCH(str, 'Fu*')
IDL> result = STRMATCH(str, '*Fu*')
IDL> result = STRMATCH(str, '*re')
IDL> result = STRMATCH(str, 'F*e')
IDL> result = STRMATCH(str, 'ut*')
IDL> result = STRMATCH(str, 'F*t')
아마 이 정도면 와일드카드 *의 사용요령은 설명이 된 것 같습니다. 와일드카드는 또 ?라는 것도 있는데, 이것은 임의의 문자 하나를 의미합니다. 공백은 포함되지 않습니다. 따라서 *와는 분명한 차이가 존재하며, ?는 *보다 덜 유연한 와일드카드라고 보면 되겠습니다. 다음과 같은 두 결과를 비교해보면 *와 ?의 차이를 알 수 있습니다.
IDL> result1 = STRMATCH(str, 'F*e')
IDL> result2 = STRMATCH(str, 'F?e')
IDL> str = 'Future'
IDL> result = STRMATCH(str, 'Futu[rst]e')
IDL> PRINT, result
1
여기서는 뒷부분의 u와 e 사이의 문자가 r, s, t 중 하나와 일치하기만 한다면 됩니다. 실제로는 r이 위치하므로 전체적으로도 1(일치함)이라는 결과를 얻게 됩니다. 물론 다음과 같은 경우에는 0(불일치)으로 판정됩니다. 왜냐하면 []안에는 r이 존재하지 않기 때문입니다.
IDL> str = 'Future'
IDL> result = STRMATCH(str, 'Futu[stu]e')
IDL> PRINT, result
0
'IDL > Programming' 카테고리의 다른 글
삼각함수의 사용에 있어서 유의할 점들 (0) | 2013.07.04 |
---|---|
배열 인덱싱에 관한 간단한 팁 (0) | 2013.06.03 |
알아두면 편리한 문자처리 함수들 [3] (0) | 2013.01.17 |
알아두면 편리한 문자처리 함수들 [2] (0) | 2013.01.16 |
알아두면 편리한 문자처리 함수들 [1] (0) | 2013.01.15 |