RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'형태소'에 해당되는 글 5
형태소  2007/01/07 19:09
Learning to Use Regular Expressions by Example

현재 제가 작업하고 있는 사이트는 폼을 통한 유저입력에 많은 의존을 하고 있고 모든 데이터는 데이터베이스로 보내기 전에 검사해야합니다. 처음에는 PHP3의 정규 표현식 함수를 사용하면 된다는 건 알고 있었지만 어떻게 정규표현식을 작성해야 할지 몰랐습니다. 제가 필요로 했던 것은 뭔가 예제가 될만한 것이었죠. (물론 처음으로 본 것은 PHP3 매뉴얼과 POSIX 1002.3 스펙이었죠 하지만 예제가 없어서 별 도움이 되질 못했습니다) 덧 붙여 말하자면 정규표현식에 대한 좋은 글을 웹에서 찾기란 정말 어려웠습니다. 전 경험과 시행착오로 점점 그것에 대해 알게 되었고 별거 아님을 깨달았습니다. 그래서 이 글에서 문법에 대한 직접적인 설명을 하고 금액 입력과 email 주소 문자열을 을 검사하는 정규표현식을 작성하는 단계를 설명하려합니다.

- Basic Syntax of Regular Expressions (정규표현식의 기본 문법)

먼저 특수문자 '^'와 '$'를 살펴봅시다. 이 문자의 역할은 문자열의 시작과 끝을 의미합니다. 다음과 같은 해당 예를 들 수 있습니다.

"^The": "The"로 시작하는 문자열
"of despair$": "of despair"로 끝나는 문자열
"^abc$": "abc"로 시작하고 "abc"로 끝나는 문자열 ("abc" 라는 문자열도 해당됨)
"notice": "notice"가 들어 있는 문자열

마지막 예제에서 보듯이 이 두 개의 특수문자가 없는 패턴은 검사대상이 되는 문자열에 어떤 위치에서든지 들어 있음 의미합니다.

특수문자로는 '*', '+', '?'도 있습니다. 이 문자들은 어떤 문자의 반복에 관한 지정을 해주는 문자입니다. 각각 '0또는 그 이상', '1또는 그 이상', '0또는 1'을 의미합니다. 여기에 몇 가지 예제가 있습니다.

"ab*": a뒤에 0 이상의 b가 있는 문자열 ("a", "ab", "abbb", 등);
"ab+": 위와 동일 하지만 최소한 하나 이상의 b가 있어야 함 ("ab", "abbb", 등);
"ab?": b가 하나 있을 수도 있고 없을 수도 있음 (ab 또는 a)
"a?b+$": a가 있을 수도 있고 없을 수도 있으며 그뒤에 하나 이상의 b로 끝나는 문자열

{ }를 사용하면 반복되는 수를 영역으로 지정할 수 있습니다.

"ab{2}": a뒤에 2개의 b가 있는 문자열 ("abb");
"ab{2,}": a뒤에 최소한 2개 이상의 b가 있는 문자열 ("abb", "abbbb", 등.);
"ab{3,5}": a뒤에 3개에서 5개 사이의 b가 있는 문자열 ("abbb", "abbbb", 또는 "abbbbb").

{ }를 사용할 대는 반드시 첫 번째 숫자는 적어야 됨을 유의합니다. ((O) "{0,2}", (X) "{,2}"). 또한 '*', '+', '?'는 각각 "{0,}", "{1,}", "{0,1}"와 같습니다.

이제 ()를 사용해서 하나의 문자가 아닌 여러 문자를 지정하는 방법을 알아봅니다.

"a(bc)*": a 뒤에 "bc"가 0또는 그이상의 수만큼 있는 문자열
"a(bc){1,5}": a 뒤에 "bc."가 1에서 5번 들어 있는 문자열

또 다른 특수문자로는 OR 연산을 하는 '|'를 들 수 있습니다.

"hi|hello": "hi"나 "hello"가 들어 있는 문자열
"(b|cd)ef": "bef" 또는 "cdef"
"(a|b)*c": a와 b가 섞여서 여러번 나타나고 그뒤에 c가 붙어있는 패턴

'.' (period)는 어떤 한 문자를 의미합니다.

"a.[0-9]": a뒤에 한 문자와 숫자가 붙어 있는 패턴
"^.{3}$": 3문자로만 되어 있는 문자열

[]표현은 문자열의 해당 위치에 사용될 수 있는 문자를 표현하는데 사용합니다.

"[ab]": a또는 b ("a|b"와 동일한 표현);
"[a-d]": 소문자 'a'에서 'd'까지 ("a|b|c|d"또는 "[abcd]"와 동일);
"^[a-zA-Z]": 영문자로 시작하는 문자열
"[0-9]%": % 문자 앞에 하나의 문자가 붙어 있는 패턴
",[a-zA-Z0-9]$": 영문자, 숫자로 끝나는 문자열 패턴

[]에서 '^'를 표현의 가장 처음에 사용하면 나타나서는 안 되는 문자를 지정할 수 있습니다. (예> "%[^a-zA-Z]%" 두 % 사이에 영문자가 없는 패턴)

"^.[$()|*+?{"같은 특수 문자는 백슬레쉬('')를 사용해서 escape될 수 있습니다( 역자 주 : escape 이란 다른 말로 literal로 탈출한다라고 할 수 있습니다 즉 특수문자로 인식되지 않고 일반 문자로 인식되게 합니다). 사용하는 관점에서 보면 백슬레쉬도 PHP3의 문자열에서 escape되어야 하기 때문에 예를 들어 "($|?[0-9]+"같은 정규표현식은 ereg("($|?[0-9]+", $str) 와 같이 사용됩니다 (이 표현식은 무얼 검사하는 걸까요? ^^;(이건 역자가 한 말이 아닙니다))

하지만 []안에서는 특수문자가 모두 효력을 읽게 되기 때문에 이 법칙을 벗어남을 기억하세요 []안에서는 백슬레쉬를 포함한 모든 특수문자들이 그 힘을 읽습니다 (예> "[*+?{}.]"는 말그대로 '*', '', '+', '?', '{', '}', '.' 문자를 의미합니다. 그리고 regex man 페이지에 나오듯이 ']'문자 자체를 포함하려면 문자들 리스트의 첫 번째에 위치시킵니다('^'가 있으면 '^'뒤에). '-'를 포함하려면 첫 번째 또는 마지막 문자로 지정하고 '-'문자가 영역의 경계 (예> a에서 -까지)일 경우 영역지정 문자의 두 번째 경계로 지정([a--])합니다.

완벽한 설명을 하려면 대조 순서(collating sequences), 문자 클래스(character classes), 동일 클래스(equivalence classes)에 대해서도 다루어야 하지만 이 글에서는 별 상관관계가 없기 때문에 regex man 페이지를 참고하도록 합니다.

-Validating Money Strings (금액 문자열 검사하기)

ok 이제 우리는 여기서 배운 것을 뭔가 실질적인 것에 적용 시켜봅시다. 사용자가 입력한 금액을 검사하는 정규표현식에 대해 알아봅니다. 금액은 "10000.00" 와 "10,000.00", 와, 센트 없이, "10000" 와 "10,000" 이렇게 4가지 방법으로 사용됩니다. (역자주 : 달러와 센트 군요 蝁,.蝁)

다음 정규표현식을 기초로 시작해 봅시다.

^[1-9][0-9]*$

정규표현식은 0으로 시작하지 않는 어떠한 수인지를 검사합니다. 하지만 "0"도 통과되지 못합니다. 그래서 다음과 같이 수정합니다.

^(0|[1-9][0-9]*)$

말로 표현하면 "0 이거나 0으로 시작하지 않는 수"입니다. 이제 수 앞에 -부호도 사용할 수 있게 수정해 봅니다.

^(0|-?[1-9][0-9]*)$

이 뜻은 "0 이거나 -이 있을 수 있는 수이고 이 수는 0으로 시작하지 않는다"입니다. 이제 좀 느슨하게 하고 유저가 0으로 시작하는 수도 입력할 수 있도록 해봅니다. 금액에 필요없는 -부호도 없애버립니다. 그리고 선택사항인 소수점 부분 패턴도 넣어서 다음 정규표현식이 나옵니다.

^[0-9]+(.[0-9]+)?$

하이라이트된 부분은 소수점(.)이 항상 최소한 하나이상의 수와 붙어 있어야 함을 의미합니다. 그러므로 예를 들면 "10."은 통과되지 못하고 "10" 과 "10.2"는 통과합니다.

^[0-9]+(.[0-9]{2})?$

이제 소수점 뒤에 반드시 2개의 수가 붙어 있어야 합니다. 이게 너무 심하다 싶으면 다음과 같이 해서

^[0-9]+(.[0-9]{1,2})?$

소수점 뒤에 하나의 숫자만 올 수도 있게 합니다. 이제 1000단위를 구분하는 ','를 표현해 봅니다.

^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

"1~3개의 숫자와 그 뒤에 ','와 3개의 숫자로 이루어진 부분이 0개 또는 그 이상이 붙어 있는 패턴". 쉽죠? 이제 ','도 선택사항(옵션:option)으로 만들어 봅니다.

^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

이게 전부입니다. 여기서 '+'를 '*'로 바꾸면 빈 문자열도 통과되는 패턴이 됩니다. 함수호출할 때 백슬래쉬 문자 escape하는 것 (역자 : /를 //로) 잊지 마세요. 일단 문자열이 검사되어 지면 str_replace("," , "" , $money) 함수로 ','를 없애버리고 double로 형 변환을 해서 산술연산에도 사용할 수 있게 합니다.

- Validating E-mail Addresses (E-mail 주소 검사하기)

이제 e-mail 주소를 살펴봅시다. e-mail주소는 3부분으로 구성됩니다. : user 명(@왼쪽편에 있는 모든 것), '@', 그리고 서버명(나머지 부분들) user명은 대문자 또는 소문자와 숫자, '.' '-', '_'로 구성됩니다. '_'를 제외하면 서버명도 마찬가지입니다. user 명은 .으로 시작하거나 끝나지 않습니다. domain명도 마찬가지입니다. 또한 .이 연속으로 있을 수도 없고 . 사이에는 최소한 하나 이상의 문자가 있어야 합니다. 이제 user명 부분을 검사하는 정규표현식을 만들어 봅시다.

^[_a-zA-Z0-9-]+$

정규표현식은 아직 .을 지원하지 않습니다. 다음과 같이 수정합니다.

^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*$

말로 하면 "최소한 하나의 유효한 문자(valid character)와 그 뒤에 .과 유효문자들로 구성된 부분이 0또는 그 이상이 있는 패턴"입니다.

좀 간단하게 하기 위해 이 정규표현식을 ereg()대신에 eregi()함수에 사용합니다. eregi()함수는 대소문자를 구분하지 않기 때문에 "a-z"와 "A-Z"같이 두 개의 영역을 지정하지 않아도 되는 이점이 있습니다.(둘 중 어떤 것이라도 상관없음)

^[_a-z0-9-]+(.[_a-z0-9-]+)*$

서버명의 경우 '_'만 제외하고는 동일합니다.
^[a-z0-9-]+(.[a-z0-9-]+)*$

이제 '@'를 중심으로 서로 붙여서 다음과 같이 만들어 냅니다.

^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$

- 기타 사용

Extracting Parts of a String (문자열의 일부분 잘라내기)

ereg()와 eregi()함수는 문자열에서 패턴에 해당되는 부분을 잘라내는 기능이 있습니다. (메뉴얼 참고) 예를 들면 path/URL 문자열에서 파일명을 잘라내고 싶은 경우 다음과 같은 코드가 필요할 것입니다.

ereg("([^/]*)$", $pathOrUrl, $regs);
echo $regs[1];

Advanced Replacing (치환의 발전된 형태)

ereg_replace() 와 eregi_replace()는 아주 유용한 함수입니다. 문자열에 있는 모든 문자를 ','로 구분한다고 가정해 봅시다. 다음과 같이 할 수 있습니다. (역자 : trim()함수는 문자열의 앞과 뒤에 있는 공백문자를 모두 제거하는 함수)

ereg_replace("[ nrt]+", ",", trim($str));

- Some exercises (연습문제)

여기 당신을 좀 바쁘게 할 만한 것들이 있습니다 (^^;)

1. 여기 나온 email 검사 정규표현식의 서버 부분을 최소한 두 개의 이름으로 구성되어야 하게 수정하시오 (hint : 단 하나의 문자만 변경하면 됨)
2. trim()기능을 하는 ereg_replace()함수호출을 하시오
3. '#', '@', '&', '%'를 '~'로 수정하는 ereg_replace()함수호출을 하시오

Have fun!

출처 : www,phpbuilder.com
원문 : Dario F. Gomes (dario@who.net) 1999/06/16
번역 : 허련호 (rhheo@hanmail.net) 2001/01/30
2007/01/07 19:09 2007/01/07 19:09
이 글에는 트랙백을 보낼 수 없습니다

Learning to Use Regular Expressions by Example
(예제로 배우는 정규표현식)

현재 제가 작업하고 있는 사이트는 폼을 통한 유저입력에 많은 의존을 하고 있고 모든 데이터는 데이터베이스로 보내기 전에 검사해야합니다. 처음에는 PHP3의 정규 표현식 함수를 사용하면 된다는 건 알고 있었지만 어떻게 정규표현식을 작성해야 할지 몰랐습니다. 제가 필요로 했던 것은 뭔가 예제가 될만한 것이었죠. (물론 처음으로 본 것은 PHP3 매뉴얼과 POSIX 1002.3 스펙이었죠 하지만 예제가 없어서 별 도움이 되질 못했습니다) 덧 붙여 말하자면 정규표현식에 대한 좋은 글을 웹에서 찾기란 정말 어려웠습니다. 전 경험과 시행착오로 점점 그것에 대해 알게 되었고 별거 아님을 깨달았습니다. 그래서 이 글에서 문법에 대한 직접적인 설명을 하고 금액 입력과 email 주소 문자열을 을 검사하는 정규표현식을 작성하는 단계를 설명하려합니다.

- Basic Syntax of Regular Expressions (정규표현식의 기본 문법)

먼저 특수문자 '^'와 '$'를 살펴봅시다. 이 문자의 역할은 문자열의 시작과 끝을 의미합니다. 다음과 같은 해당 예를 들 수 있습니다.

"^The": "The"로 시작하는 문자열
"of despair$": "of despair"로 끝나는 문자열
"^abc$": "abc"로 시작하고 "abc"로 끝나는 문자열 ("abc" 라는 문자열도 해당됨)
"notice": "notice"가 들어 있는 문자열

마지막 예제에서 보듯이 이 두 개의 특수문자가 없는 패턴은 검사대상이 되는 문자열에 어떤 위치에서든지 들어 있음 의미합니다.

특수문자로는 '*', '+', '?'도 있습니다. 이 문자들은 어떤 문자의 반복에 관한 지정을 해주는 문자입니다. 각각 '0또는 그 이상', '1또는 그 이상', '0또는 1'을 의미합니다. 여기에 몇 가지 예제가 있습니다.

"ab*": a뒤에 0 이상의 b가 있는 문자열 ("a", "ab", "abbb", 등);
"ab+": 위와 동일 하지만 최소한 하나 이상의 b가 있어야 함 ("ab", "abbb", 등);
"ab?": b가 하나 있을 수도 있고 없을 수도 있음 (ab 또는 a)
"a?b+$": a가 있을 수도 있고 없을 수도 있으며 그뒤에 하나 이상의 b로 끝나는 문자열

{ }를 사용하면 반복되는 수를 영역으로 지정할 수 있습니다.

"ab{2}": a뒤에 2개의 b가 있는 문자열 ("abb");
"ab{2,}": a뒤에 최소한 2개 이상의 b가 있는 문자열 ("abb", "abbbb", 등.);
"ab{3,5}": a뒤에 3개에서 5개 사이의 b가 있는 문자열 ("abbb", "abbbb", 또는 "abbbbb").

{ }를 사용할 대는 반드시 첫 번째 숫자는 적어야 됨을 유의합니다. ((O) "{0,2}", (X) "{,2}"). 또한 '*', '+', '?'는 각각 "{0,}", "{1,}", "{0,1}"와 같습니다.

이제 ()를 사용해서 하나의 문자가 아닌 여러 문자를 지정하는 방법을 알아봅니다.

"a(bc)*": a 뒤에 "bc"가 0또는 그이상의 수만큼 있는 문자열
"a(bc){1,5}": a 뒤에 "bc."가 1에서 5번 들어 있는 문자열

또 다른 특수문자로는 OR 연산을 하는 '|'를 들 수 있습니다.

"hi|hello": "hi"나 "hello"가 들어 있는 문자열
"(b|cd)ef": "bef" 또는 "cdef"
"(a|b)*c": a와 b가 섞여서 여러번 나타나고 그뒤에 c가 붙어있는 패턴

'.' (period)는 어떤 한 문자를 의미합니다.

"a.[0-9]": a뒤에 한 문자와 숫자가 붙어 있는 패턴
"^.{3}$": 3문자로만 되어 있는 문자열

[]표현은 문자열의 해당 위치에 사용될 수 있는 문자를 표현하는데 사용합니다.

"[ab]": a또는 b ("a|b"와 동일한 표현);
"[a-d]": 소문자 'a'에서 'd'까지 ("a|b|c|d"또는 "[abcd]"와 동일);
"^[a-zA-Z]": 영문자로 시작하는 문자열
"[0-9]%": % 문자 앞에 하나의 문자가 붙어 있는 패턴
",[a-zA-Z0-9]$": 영문자, 숫자로 끝나는 문자열 패턴

[]에서 '^'를 표현의 가장 처음에 사용하면 나타나서는 안 되는 문자를 지정할 수 있습니다. (예> "%[^a-zA-Z]%" 두 % 사이에 영문자가 없는 패턴)

"^.[$()|*+?{"같은 특수 문자는 백슬레쉬('')를 사용해서 escape될 수 있습니다( 역자 주 : escape 이란 다른 말로 literal로 탈출한다라고 할 수 있습니다 즉 특수문자로 인식되지 않고 일반 문자로 인식되게 합니다). 사용하는 관점에서 보면 백슬레쉬도 PHP3의 문자열에서 escape되어야 하기 때문에 예를 들어 "($|?[0-9]+"같은 정규표현식은 ereg("(\$|?[0-9]+", $str) 와 같이 사용됩니다 (이 표현식은 무얼 검사하는 걸까요? ^^;(이건 역자가 한 말이 아닙니다))

하지만 []안에서는 특수문자가 모두 효력을 읽게 되기 때문에 이 법칙을 벗어남을 기억하세요 []안에서는 백슬레쉬를 포함한 모든 특수문자들이 그 힘을 읽습니다 (예> "[*+?{}.]"는 말그대로 '*', '', '+', '?', '{', '}', '.' 문자를 의미합니다. 그리고 regex man 페이지에 나오듯이 ']'문자 자체를 포함하려면 문자들 리스트의 첫 번째에 위치시킵니다('^'가 있으면 '^'뒤에). '-'를 포함하려면 첫 번째 또는 마지막 문자로 지정하고 '-'문자가 영역의 경계 (예> a에서 -까지)일 경우 영역지정 문자의 두 번째 경계로 지정([a--])합니다.

완벽한 설명을 하려면 대조 순서(collating sequences), 문자 클래스(character classes), 동일 클래스(equivalence classes)에 대해서도 다루어야 하지만 이 글에서는 별 상관관계가 없기 때문에 regex man 페이지를 참고하도록 합니다.

-Validating Money Strings (금액 문자열 검사하기)

ok 이제 우리는 여기서 배운 것을 뭔가 실질적인 것에 적용 시켜봅시다. 사용자가 입력한 금액을 검사하는 정규표현식에 대해 알아봅니다. 금액은 "10000.00" 와 "10,000.00", 와, 센트 없이, "10000" 와 "10,000" 이렇게 4가지 방법으로 사용됩니다. (역자주 : 달러와 센트 군요 蝁,.蝁)

다음 정규표현식을 기초로 시작해 봅시다.

^[1-9][0-9]*$

이 정규표현식은 0으로 시작하지 않는 어떠한 수인지를 검사합니다. 하지만 "0"도 통과되지 못합니다. 그래서 다음과 같이 수정합니다.

^(0|[1-9][0-9]*)$

말로 표현하면 "0 이거나 0으로 시작하지 않는 수"입니다. 이제 수 앞에 -부호도 사용할 수 있게 수정해 봅니다.

^(0|-?[1-9][0-9]*)$

이 뜻은 "0 이거나 -이 있을 수 있는 수이고 이 수는 0으로 시작하지 않는다"입니다. 이제 좀 느슨하게 하고 유저가 0으로 시작하는 수도 입력할 수 있도록 해봅니다. 금액에 필요없는 -부호도 없애버립니다. 그리고 선택사항인 소수점 부분 패턴도 넣어서 다음 정규표현식이 나옵니다.

^[0-9]+(.[0-9]+)?$

하이라이트된 부분은 소수점(.)이 항상 최소한 하나이상의 수와 붙어 있어야 함을 의미합니다. 그러므로 예를 들면 "10."은 통과되지 못하고 "10" 과 "10.2"는 통과합니다.

^[0-9]+(.[0-9]{2})?$

이제 소수점 뒤에 반드시 2개의 수가 붙어 있어야 합니다. 이게 너무 심하다 싶으면 다음과 같이 해서

^[0-9]+(.[0-9]{1,2})?$

소수점 뒤에 하나의 숫자만 올 수도 있게 합니다. 이제 1000단위를 구분하는 ','를 표현해 봅니다.

^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$

"1~3개의 숫자와 그 뒤에 ','와 3개의 숫자로 이루어진 부분이 0개 또는 그 이상이 붙어 있는 패턴". 쉽죠? 이제 ','도 선택사항(옵션:option)으로 만들어 봅니다.

^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$

이게 전부입니다. 여기서 '+'를 '*'로 바꾸면 빈 문자열도 통과되는 패턴이 됩니다. 함수호출할 때 백슬래쉬 문자 escape하는 것 (역자 : /를 //로) 잊지 마세요. 일단 문자열이 검사되어 지면 str_replace("," , "" , $money) 함수로 ','를 없애버리고 double로 형 변환을 해서 산술연산에도 사용할 수 있게 합니다.

- Validating E-mail Addresses (E-mail 주소 검사하기)

이제 e-mail 주소를 살펴봅시다. e-mail주소는 3부분으로 구성됩니다. : user 명(@왼쪽편에 있는 모든 것), '@', 그리고 서버명(나머지 부분들) user명은 대문자 또는 소문자와 숫자, '.' '-', '_'로 구성됩니다. '_'를 제외하면 서버명도 마찬가지입니다. user 명은 .으로 시작하거나 끝나지 않습니다. domain명도 마찬가지입니다. 또한 .이 연속으로 있을 수도 없고 . 사이에는 최소한 하나 이상의 문자가 있어야 합니다. 이제 user명 부분을 검사하는 정규표현식을 만들어 봅시다.

^[_a-zA-Z0-9-]+$

이 정규표현식은 아직 .을 지원하지 않습니다. 다음과 같이 수정합니다.

^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*$

말로 하면 "최소한 하나의 유효한 문자(valid character)와 그 뒤에 .과 유효문자들로 구성된 부분이 0또는 그 이상이 있는 패턴"입니다.

좀 간단하게 하기 위해 이 정규표현식을 ereg()대신에 eregi()함수에 사용합니다. eregi()함수는 대소문자를 구분하지 않기 때문에 "a-z"와 "A-Z"같이 두 개의 영역을 지정하지 않아도 되는 이점이 있습니다.(둘 중 어떤 것이라도 상관없음)

^[_a-z0-9-]+(.[_a-z0-9-]+)*$

서버명의 경우 '_'만 제외하고는 동일합니다.
^[a-z0-9-]+(.[a-z0-9-]+)*$

이제 '@'를 중심으로 서로 붙여서 다음과 같이 만들어 냅니다.

^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$

- 기타 사용

Extracting Parts of a String (문자열의 일부분 잘라내기)

ereg()와 eregi()함수는 문자열에서 패턴에 해당되는 부분을 잘라내는 기능이 있습니다. (메뉴얼 참고) 예를 들면 path/URL 문자열에서 파일명을 잘라내고 싶은 경우 다음과 같은 코드가 필요할 것입니다.

ereg("([^\/]*)$", $pathOrUrl, $regs);
echo $regs[1];

Advanced Replacing (치환의 발전된 형태)

ereg_replace() 와 eregi_replace()는 아주 유용한 함수입니다. 문자열에 있는 모든 문자를 ','로 구분한다고 가정해 봅시다. 다음과 같이 할 수 있습니다. (역자 : trim()함수는 문자열의 앞과 뒤에 있는 공백문자를 모두 제거하는 함수)

ereg_replace("[     ]+", ",", trim($str));

- Some exercises (연습문제)

여기 당신을 좀 바쁘게 할 만한 것들이 있습니다 (^^;)

1. 여기 나온 email 검사 정규표현식의 서버 부분을 최소한 두 개의 이름으로 구성되어야 하게 수정하시오 (hint : 단 하나의 문자만 변경하면 됨)
2. trim()기능을 하는 ereg_replace()함수호출을 하시오
3. '#', '@', '&', '%'를 '~'로 수정하는 ereg_replace()함수호출을 하시오

Have fun!

출처 : www,phpbuilder.com
원문 : Dario F. Gomes (dario@who.net) 1999/06/16
번역 : 허련호 (rhheo@hanmail.net) 2001/01/30

2006/10/14 14:48 2006/10/14 14:48
이 글에는 트랙백을 보낼 수 없습니다
형태소  2006/09/13 13:16
chunk_split = 문자열을 작은 조각으로 나눕니다
string chunk_split ( string body [, int chunklen [, string end]] )

예제 :
<?php
// RFC 2045 의의에 맞게 $data를 형식화
$data = "형태소공부하자";
$new_string = chunk_split($data , 4);
echo $new_string;
?>


AddCSlashes [한글]  --  C 형식으로 문자열에 슬래쉬를 덧붙입니다.
addslashes [한글]  --  문자열에 슬래쉬를 덧붙입니다.
autoLink [한글]  --  자동으로 링크를 걸어줍니다
bin2hex [한글]  --  바이너리 데이터를 16진수 표현으로 바꿉니다.
chop [한글]  --  rtrim()의 별칭.
chr [한글]  --  특정 문자를 반환합니다.
chunk_split [한글]  --  문자열을 작은 조각으로 나눕니다.
convert_cyr_string [한글]  --  키릴 문자셋을 다른 것으로 변환합니다.
count_chars [한글]  --  문자열 안에 사용한 문자에 대한 정보를 반환합니다.
crc32 [한글]  --  문자열의 crc32값을 계산합니다.
crypt [한글]  --  단방향 문자열 암호화(해슁).
echo [한글]  --  하나 이상의 문자열을 출력합니다.
explode [한글]  --  문자열을 주어진 문자열을 기준으로 분리합니다.
fprintf [한글]  --  문자열을 형식화하여 스트림에 기록합니다.
get_html_translation_table [한글]  --  htmlspecialchars()와 htmlentities()에서 사용하는 변환표를 반환합니다.
hebrev [한글]  --  논리적인 헤브루 텍스트를 알아볼 수 있는 텍스트로 변환한다.
hebrevc [한글]  --  개행 문자를 포함하여 논리 헤브라이어 텍스트를 표시 텍스트로 변환합니다.
htmlentities [한글]  --  해당하는 모든 문자를 HTML 엔티티로 변환합니다.
htmlentities [한글]  --  해당하는 모든 문자를 HTML 엔티티로 변환합니다.
htmlspecialchars [한글]  --  특수 문자를 HTML 엔터티로 변환합니다.
html_entity_decode [한글]  --  모든 HTML 엔티티를 해당하는 문자로 변환합니다.
implode [한글]  --  문자열로 배열 요소를 결합합니다.
join [한글]  --  implode()의 별칭.
levenshtein [한글]  --  두 문자열 사이의 Levenshtein distance를 계산합니다.
localeconv [한글]  --  숫자 형식화 정보를 얻습니다.
ltrim [한글]  --  문자열 시작 부분의 공백을 제거합니다.
md5 [한글]  --  문자열의 md5 해쉬를 계산합니다.
md5_file [한글]  --  주어진 파일명의 md5 해쉬를 계산합니다.
metaphone [한글]  --  문자열의 메타폰 키를 계산합니다.
money_format [한글]  --  통화 형식에 맞게 포맷한다.
nl2br [한글]  --  문자열의 모든 줄바꿈 앞에 HTML 줄바꿈 태그를 삽입합니다.
nl_langinfo [한글]  --  언어와 로케일 정보를 얻습니다.
number_format [한글]  --  숫자를 천단위로 묶어서 표현한다.
ord [한글]  --  문자의 아스키 값을 반환합니다.
parse_str [한글]  --  문자열을 처리하여 변수를 생성합니다.
print [한글]  --  문자열을 출력합니다.
printf [한글]  --  형식화한 문자열을 출력합니다.
quoted_printable_decode [한글]  --  인용되어 있는 출력 가능 문자열을 8비트 문자열로 변환합니다.
quotemeta [한글]  --  메타 문자를 인용합니다.
rtrim [한글]  --  문자열 끝 부분의 공백을 제거합니다.
setlocale [한글]  --  지역정보를 지정한다.
sha1 [한글]  --  문자열의 sha1 해쉬를 계산합니다.
sha1_file [한글]  --  파일의 sha1 해쉬를 계산합니다.
similar_text [한글]  --  두 문자열 간의 유사성을 계산합니다.
soundex [한글]  --  문자열의 soundex 키를 계산합니다.
sprintf [한글]  --  형식화한 문자열을 반환합니다.
sscanf [한글]  --  문자열을 형식에 따라 처리합니다.
strcasecmp [한글]  --  대소문자를 구별하지 않는 바이너리 호환 문자열 비교
strchr [한글]  --  strstr()의 별칭.
strcmp [한글]  --  바이너리 호환 문자열 비교
strcoll [한글]  --  로케일 기반 문자열 비교
strcspn [한글]  --  마스크에 매칭하지 않는 처음 세그먼트의 길이를 찾습니다.
stripcslashes [한글]  --  addcslashes()로 처리한 문자열을 되돌립니다.
stripos [한글]  --  대소문자를 구별하지 않고 문자열이 처음 나타나는 위치를 찾습니다.
stripslashes [한글]  --  addslashes()로 처리한 문자열을 되돌립니다.
stripTags [한글]  --  문자열 중 특정한 태그를 제거한다
strip_tags [한글]  --  문자열에서 HTML과 PHP 태그를 제거합니다.
stristr [한글]  --  대소문자를 구별하지 않는 strstr()
strlen [한글]  --  주어진 문자열의 길이를 구해서 돌려준다.
strnatcasecmp [한글]  --  "natural order" 알고리즘을 이용한 대소문자를 구별하지 않는 문자열 비교.
strnatcmp [한글]  --  "natural order" 알고리즘을 이용한 문자열 비교
strncasecmp [한글]  --  대소문자를 구별하지 않는 처음 n 문자의 이진 호환 문자열 비교
strncmp [한글]  --  처음 n 문자의 이진 호환 문자열 비교
strpos [한글]  --  문자열이 처음 나타나는 위치를 찾습니다.
strrchr [한글]  --  문자열에서 가장 마지막의 어커런스를 찾는다.
strrev [한글]  --  문자열을 뒤집는다.
strripos [한글]  --  대소문자를 구별하지 않고 문자열에서 어떤 문자열의 마지막 위치를 찾습니다.
strrpos [한글]  --  문자열 안에서 문자의 마지막 출현 위치를 반환한다.
strspn [한글]  --  마스크에 매칭되는 초기 세그먼트의 길이를 찾는다.
strstr [한글]  --  문자열의 처음 어커런스를 찾는다
strstr [한글]  --  문자열의 처음 어커런스를 찾는다
strtok [한글]  --  문자열을 토큰화한다.
strtolower [한글]  --  문자열을 소문자로 만든다.
strtoupper [한글]  --  문자열을 대문자로 만든다.
strtr [한글]  --  특정 문자를 번역한다.
str_ireplace [한글]  --  대소문자를 구별하지 않는 str_replace().
str_pad [한글]  --  문자열을 주어진 길이로 만든다.
str_repeat [한글]  --  문자열을 반복합니다.
str_replace [한글]  --  발견한 모든 검색 문자열을 치환 문자열로 교체합니다.
str_replace [한글]  --  발견한 모든 검색 문자열을 치환 문자열로 교체합니다.
str_rot13 [한글]  --  문자열에 rot13 변환을 수행합니다.
str_shuffle [한글]  --  문자열을 랜덤하게 섞습니다.
str_split [한글]  --  문자열을 배열로 변환합니다.
str_word_count [한글]  --  문자열에서 사용한 단어에 대한 정보를 반환합니다.
substr [한글]  --  문자열의 일부를 반환한다.
substr_compare [원문]  --  Binary safe optionally case insensitive comparison of 2 strings from an offset, up to length characters
substr_count [한글]  --  부분문자열의 수를 센다
substr_replace [한글]  --  문자열의 일부를 치환한다.
trim [한글]  --  문자열의 처음과 끝에 있는 공백을 제거한다.
ucfirst [한글]  --  문자열의 처음 글자를 대문자로 만든다.
ucwords [한글]  --  문자열에 있는 각 단어의 처음 글자를 대문자로 바꾼다.
vprintf [원문]  --  Output a formatted string
vsprintf [원문]  --  Return a formatted string
wordwrap [한글]  --  정지문자를 이용해 주어진 수 만큼의 문자를 래핑한다.
2006/09/13 13:16 2006/09/13 13:16
이 글에는 트랙백을 보낼 수 없습니다
출처 블로그 > 돈포겟미
원본 http://blog.naver.com/jjazungna/23879946
ascii code 아스키 코드표

Char

Hex

Oct

Dec

Char

Hex

Oct

Dec

Char

Hex

Oct

Dec

Char

Hex

Oct

Dec

Ctrl-@

NUL

00

000

0

Space

20

040

32

@

40

100

64

`

60

140

96

Ctrl-A SOH

01

001

1

!

21

041

33

A

41

101

65

a

61

141

97

Ctrl-B STX

02

002

2

"

22

042

34

B

42

102

66

b

62

142

98

Ctrl-C ETX

03

003

3

#

23

043

35

C

43

103

67

c

63

143

99

Ctrl-D EOT

04

004

4

$

24

044

36

D

44

104

68

d

64

144

100

Ctrl-E ENQ

05

005

5

%

25

045

37

E

45

105

69

e

65

145

101

Ctrl-F ACK

06

006

6

&

26

046

38

F

46

106

70

f

66

146

102

Ctrl-G BEL

07

007

7

'

27

047

39

G

47

107

71

g

67

147

103

Ctrl-H BS

08

010

8

(

28

050

40

H

48

110

72

h

68

150

104

Ctrl-I HT

09

011

9

)

29

051

41

I

49

111

73

i

69

151

105

Ctrl-J LF

0A

012

10

*

2A

052

42

J

4A

112

74

j

6A

152

106

Ctrl-K VT

0B

013

11

+

2B

053

43

K

4B

113

75

k

6B

153

107

Ctrl-L FF

0C

014

12

,

2C

054

44

L

4C

114

76

l

6C

154

108

Ctrl-M CR

0D

015

13

-

2D

055

45

M

4D

115

77

m

6D

155

109

Ctrl-N SO

0E

016

14

.

2E

056

46

N

4E

116

78

n

6E

156

110

Ctrl-O SI

0F

017

15

/

2F

057

47

O

4F

117

79

o

6F

157

111

Ctrl-P DLE

10

020

16

0

30

060

48

P

50

120

80

p

70

160

112

Ctrl-Q DCI

11

021

17

1

31

061

49

Q

51

121

81

q

71

161

113

Ctrl-R DC2

12

022

18

2

32

062

50

R

52

122

82

r

72

162

114

Ctrl-S DC3

13

023

19

3

33

063

51

S

53

123

83

s

73

163

115

Ctrl-T DC4

14

024

20

4

34

064

52

T

54

124

84

t

74

164

116

Ctrl-U NAK

15

025

21

5

35

065

53

U

55

125

85

u

75

165

117

Ctrl-V SYN

16

026

22

6

36

066

54

V

56

126

86

v

76

166

118

Ctrl-W ETB

17

027

23

7

37

067

55

W

57

127

87

w

77

167

119

Ctrl-X CAN

18

030

24

8

38

070

56

X

58

130

88

x

78

170

120

Ctrl-Y EM

19

031

25

9

39

071

57

Y

59

131

89

y

79

171

121

Ctrl-Z SUB

1A

032

26

:

3A

072

58

Z

5A

132

90

z

7A

172

122

Ctrl-[ ESC

1B

033

27

;

3B

073

59

[

5B

133

91

{

7B

173

123

Ctrl- FS

1C

034

28

<

3C

074

60

5C

134

92

|

7C

174

124

Ctrl-] GS

1D

035

29

=

3D

075

61

]

5D

135

93

}

7D

175

125

Ctrl-^ RS

1E

036

30

>

3E

076

62

^

5E

136

94

~

7E

176

126

Ctrl_ US

1F

037

31

?

3F

077

63

_

5F

137

95

DEL

7F

177

127


2006/09/08 22:02 2006/09/08 22:02
이 글에는 트랙백을 보낼 수 없습니다

접미사 [, suffix]
///
요약
접사()의 하나로 낱말의 끝에 붙어 의미를 첨가하여 다른 낱말을 이루는 말.
본문

단독으로는 사용할 수 없고, 항상 다른 단어의 어근 뒤에 결합되어, 여러 가지 의미를 첨가해 주는 역할을 한다. 접미사가 결합된 어형을 파생어라 하며 품사가 달라지는 경우가 많다.

체언에 붙는 접미사로는 존칭을 나타내는 ‘-님’이나 동작주()를 나타내는 ‘-수’ ‘-자’ 등과, 복수를 표시하는 ‘-들’, 그 밖에 ‘-화’ ‘-식’ ‘-적’ 등이 있다. 용언에 붙는 접미사로는 사동 ·피동을 나타내는 ‘이 ·히 ·리 ·기 ·우’ 등을 들 수 있다. 또 접미사 가운데는 원래의 품사는 그대로 둔 채, 새로운 의미만을 첨가하는 것, 원래의 자립어와는 문법적 기능을 달리하는 것이 있으며, 형용사에서 명사를 파생시키는 경우, 또는 명사에서 동사를 파생시키는 경우 등도 있다. 그리고 접미사와 어미의 구별이 모호한 경우도 많다.

외국어의 경우는 독립된 단어의 어기() 뒤에 붙어서 그 단어의 의미나 기능을 변화시키는 부속형식을 접미사라고 한다. 단독으로는 나타날 수 없고 강세를 받는 일도 거의 없다(예:man-manly, kind-kindness, beauty-beautiful 등). 문법적 기능을 변화시키는 수단으로 사용된 예로는 car-cars, easy-easier, enter-entered 등을 들 수 있다. 이들 복수어미나 비교급어미는 넓은 의미의 접미사에 속하지만 좁은 의미로는 어미에 속한다. 아이누어나 에스키모어 같은 포합어()에서는 하나의 어기에 접두사나 접미사가 여러 개 잇달아 붙어 여러 가지 문법적 기능을 맡을 때도 있다.

< 조사의 종류 > 

구 분

종 류

내     용

격조사

주격조사

앞의 말을 문장의 주어가 되게 해 주는 조사

이/가, 께서, 에서

서술격조사

앞의 말을  문장의 서술어가 되게 해 주는 조사

이다

목적격조사

앞의 말을 목적어가 되게 해 주는 조사

을/를

보격조사

앞의 말을 보어가 되게 해 주는 조사

이/가

관형격조사

앞의 말을 관형어가 되게 해 주는 조사

부사격조사

앞의 말을 부사어가 되게 해 주는 조사

에서, 으로……

호격조사

부르는 말에 붙어서 독립어로 만들어 주는 조사

아/야, 여, 이여

접속조사

두 단어를 같은 자격으로 이어 주는 조사 

와 /과, 하고

보조사

다른 조사와는 달리 일정한 한 자리(격)에만 쓰이지 않고, 여러

성분에 두루 붙어서 거기에 특별한 의미를 더해 주는 조사

은/는,  도,  만,

뿐,  마다,  조차,

(야)말로


<품사의 종류〉

품사-단어의 성질이 공통된 것끼리 모아 분류한 단어의 갈래

형태

기능

            특징

의미

                 특징

불변어

체언

․문장에서 주로 주어 역할을 함

․형태가 고정되어 있어 변하지 않음    

․조사가 붙어 모든 문장 성분으로 쓰    일 수 있음

․실질적인 의미를 지님

명사

․구체적인 대상의 이름이나 추상적인 대상의 이름을    나타내는 단어.     

  예) 충무공, 색종이

대명사

․사람, 사물, 장소의 이름을 대신하여 가리키는 단어. 

․관형사의 수식을 받지 않음

  예) 나, 이것, 여기, 우리

수사

․수량이나 순서를 가리키는 단어.

  예) 하나, 둘 ,첫째, 둘째

특별한 경우를 제외하고는 관형사의 수식을 받지

  예) 다른 하나

  않음

뒤에 조사가 붙으면 수사이고, 그렇지 않고 체언을          꾸며 주는 말은 관형사

가변어

용언

․문장에서 주로 서술어로 쓰이나

  여러 가지 문장 성분으로 쓰일 수     있음 

․문장에서 쓰임에 따라 형태가 변함

  (활용 할 수 있음)        

동사

․사람이나 사물의 상태나 성질을 나타내는 단어         예) 흐른다, 먹다

형용사

․사람이나 사물의 상태나 성질을 나타내는 단어.       예) 아름답다, 곱다

명령형 어미와 청유형 어미는 사용되지 않음 

  예) 예뻐라(×), 예쁘자(×)

불변어

수식언

․형태가 변하지 않음

․다른 성분을 꾸며주는 역할을 함    

관형사

․체언 앞에 놓여서 그 말을 자세하게 꾸며 주는 단어    예) 새, 한, 모든. 이

조사를 취할 수 없음

․문장 속에서 관형어로만 쓰임

이, 그, 저 등은 조사 없이 체언을 꾸미면 관형사,

   조사가 붙어 쓰이면 대명사

부사        

․주로 용언을 꾸며 주지만, 때로 체언, 수식언, 문장    전체 등을 꾸미기도 함

  예) 아주, 일찍, 그러나

․보조사는 연결되지만 격조사는 연결 안됨

․부사어로만 쓰임

불변어

(서술격

조사-‘이다’만 가변어)

관계언

․주로 체언 뒤에 붙으며 용언의 명사    형이나 부사에도 결합하여 쓰이며     단어로 인정함

․서술격 조사‘-이다’를 제외하고는

  활용 할 수 없음

조사

․체언 뒤에 붙어서 다른 말과의 문법적인 관계를 나    타내 주는 조사

  예) 이/가, 을/를, 이다

조사

․특별한 뜻을 더해 주는 역할을 하는 조사

  예) 도, 만, 부터

불변어

독립언

․문장에서 독립적으로 쓰임

․문장 어느 곳에나 놓일 수 있음

․형태 변하지 않으며 조사가 붙지

  않음   

감탄사

․감정을 넣어 말하는 이의 놀람, 느낌, 부름이나, 대    답을 나타내는 단어

  예) 앗, 어머, 야, 네

※ ‘지은아, 풀 좀 빌려줘’

문장성분은 독립어지만 품사는 명사+조사로  되어 있음

                                                                  

2. 문장 성분의 종류

• 문장성분 : 문장 안에서 문장을 구성하면서 일정한 문법적인 기능을 하는 각 부분

• 문장성분의 종류 - 주성분, 부속성분, 독립성분

㈀ 주성분 : 문장을 이루는 데 골격이 되는 부분 (주어, 목적어, 보어, 서술어)

㈁ 부속성분 : 주로 주성분의 내용을 수식하는 성분 (관형어, 부사어)

㈂ 독립성분 : 문장에서 다른 성분과 직접적인 관련이 없는 성분 (독립어)


(1) 서술어와 주어

• 서술어

개념 : 주어의 동작이나 작용, 상태, 성질 등을 풀이하는 기능을 하는 문장 성분

실현 : 동사나 형용사로 이루어지는 것이 보통이나 체언에 서술격 조사 ‘이다’가 결합되어

이루어진 경우도 있다.

• 국어 문장의 유형 : 서술어의 종류에 따라 ‘무엇이 어떠하다’, ‘무엇이 어찌하다’, ‘무엇이 무엇이다’로 나뉨. 여기에서 ‘어떠하다’, ‘어찌하다’, ‘무엇이다’에 해당하는 것이 서술어이다.

• 서술어의 자릿수 : 서술어는 그 성격에 따라서 필요로 하는 문장 성분의 개수가 다른데, 이를 서술어의 자릿수라고 한다.

그녀는 예뻤다. -  한 자리 서술어

  그는 연극을 보았다.   우정은 보석과 같다.   물이 어음이 되었다. - 두 자리 서술어 (목적어, 부사어, 보어를 필수적으로 요구)

할아버지께서 우리들에게 세뱃돈을 주셨다. - 세 자리 서술어 (주어와 목적어 부사      어 세 가지를 필수적으로 요구)

• 주어

개념 : 문장에서 동작이나 작용, 상태, 성질의 주체를 나타낸다. 문장을 서술어의 종류에 따라 나눌 때 ‘무엇이’에 해당한다.

실현 : 주어는 체언이나 체언구실을 하는 구나 절에 ‘이/가’, ‘께서’가 붙어 나타나는 데 주격 조사가 생략될 수도 있고 보조사가 붙을 수도 있다.

철수가 집에 간다.   어디 가니?    영희도 집에 간다.

그 소년이 무지개를 바라보았다.   그림 그리기가 나의 취미다.

할아버지께서만 그 일을 할 수 있으셔.


(2) 목적어와 보어

• 목적어

개념 : 서술어의 동작 대상이 되는 문장 성분, 타동사가 서술어로 쓰일 때는 목적어가 필요하다.

실현 : 체언에 목적격 조사 ‘을/를’이 붙는 것이 일반적이나, 때로 ‘을/를’이 생략될 수도 있다. 또 ‘을/를’이 생략되는 대신에 특정한 의미를 더하여 주는 보조사가 붙기도 한다.

나는 과일 좋아해.      난 과일 좋아해.       나는 과일 좋아해.

• 목적격 조사의 보조사적 용법 : 학교 문법에서는 목적격 조사를 취하고 있으면 무조건 목적어로 보고 있다. 하지만 목적격 조사를 취하고 있지만 기능이나 의미상 목적어로 보기 힘든 것을 목적격 조사의 보조사적 용법 정도로 간주하고 있다.(다른 문법적 의견으로는 강조의 보조사 ‘을/를’을 따로 설정)

나는 학교에 갔다.    나는 학교를 갔다.

지애는 선물을 기연이에게  주었다.    지애는 선물을 기연이를 주었다.

• 보어

개념 : ‘되다, 아니다’와 같은 서술어를 필요로 하는 문장 성분만을 보어로 인정한다.

실현 : 체언에 보격조사 ‘이/가’가 붙어서 실현된다.

물이 얼음이 되었다.    물이 얼음으로 되었다. (필수적 부사어)                       


(3) 관형어, 부사어, 독립어

• 관형어

개념 : 체언을 수식

실현 : 관형사가 그대로 관형어가 되는 것이 기본이나, 체언에 관형격 조사 ‘의’가 결합되어 관형어로 쓰이거나(관형격 조사 ‘의’가 없이 ‘체언+체언’의 구성으로 나타나기도 한다.), 용언의 관형사형 (용언의 어간에 관형사형 어미 ‘-(으)ㄴ, -는, -(으)ㄹ, -던’이 결합)으로 나타난다.

아기가 옷을 입었다.

소녀는 시골의 풍경을 좋아한다.

소녀는 시골 풍경을 좋아한다.

• 부사어

㈀ 성분 부사어

개념 : 용언, 관형어, 다른 부사어를 수식

실현 : 부사어가 그대로 부사어가 되는 것이 기본이나, 체언에 부사격 조사‘에,에서, 에게, (으)로’가 결합되어 나타나거나, 용언의 부사형 ‘이, 게, -(아)서, -도록’으로 나타난다. 또 보조사가 결합되어 실현되기도 한다.

가을 하늘이 높아 보인다.  (부사에 의한 실현)

우리들은 오후에 여행에서 돌아왔다.   (체언에 부사격 조사가 결합되어 실현)

무척이나 맑아 보인다.  (부사에 보조사가 결합하여 실현)

㈁ 문장 부사어

개념 : 문장 전체를 수식 (문장이나 단어를 이어주는 접속 부사어와 ‘과연, 설마, 모름지기, 확실히, 만일, 설령, 제발, 부디’같이 말하는 사람의 심리적 태도를 나타내는 부사들, 이러한 부사들을 특별한 말들과 호응 관계를 이루는 경우가 많다.)

그러나 희망이 아주 사라진 것은 아니다.

정치, 결제 문화가 발달하여야 선진국이다.

과연 그 아이는 똑똑하구나.

확실히 오늘 경기는 신나는 한 판이었어.

만일 네가 계속 이런 식으로 나온다면 더 이상은 참을 수 없어.

모름지기 젊은이는 커다란 포부를 가져야 한다.

• 필수적 부사어와 수의적 부사어

개념 : 문장에서 꼭 필요로 하는 부사어를 필수적 부사어, 그렇지 않은 부사어를 수의적 부사어라 한다. (부사어는 문장에서 꼭 필요한 성분은 아니다.)

실현

㈀ 수의적 부사어 : 파생 부사나(많이, 일찍이) 순수 부사로(꼭) 이루어짐

㈁ 필수적 부사어 : 부사격 조사 ‘와, 로’ 등이 결합되어 이루어짐 (‘다르다, 생기다, 같다, 비슷하다, 닮다, 다르다’같은 두 자리서술어나, ‘주다, 삼다, 넣다, 두다’같은 세 자리 서술어는 필수적으로 부사어를 요구한다.)

㈀ 나는 나, 너와는 많이 다르다.   영현이는 아빠와 닮았다. 

  아버지는 일찍이 그 아이를 수양딸로 삼으셨다

㈁ 나는 나, 너와는 다르다.        영현이는 아빠와 닮았다.

  아버지는 그 아이를 수양딸로 삼으셨다.

• 체언 수식 부사

개념 : ‘바로, 다만, 단지, 특히, 오직, 겨우, 아주’ 등은 부사이지만 관형어처럼 사용되기도 하다.(학교 문법에서는 품사의 통용을 설정하고 있으므로 관형사로 통용하는 처리도 가능하다는 점에서 체언 수식 부사로 처리하는 것에 문제점이 있다.)

바로 오너라.    그건 바로 너의 책임이다.

•독립어

개념 : 문장의 어느 성분과도 직접적인 관련이 없는 문장 성분

실현 : 일반적으로 감탄사가 독립어가 되나, 체언에 호격 조사 ‘아, 이여’가 결합된 형태로도 나타난다.


누가 / 무엇이

무엇을, 무엇이

무엇이다

어떠하다

어찌하다

나는

탐험가가

되겠다.

고양이는

장난꾸러기이다.

동남이는

음료수를

좋아한다.

기능

● 한 문장에서 동작,   성질, 관계 등의 주체   가 되는 부분이다. 문   장 속에서 ‘누가/무엇   이’에 해당하며, 구어체   에는 흔히 생략되기도   한다.

● 행위의 대상이 되는   말을 가리키는 문장 성   분이다(목적어).

● 문장 속에서 ‘되다/   아니다’ 앞에 필수적으   로 요구되는 문장 성분   으로, 이들 말을 보충   해 주는 기능을 한다    (보어). 

● 문장의 가장 중심이   되는 성분으로서, 문장   주체의 동작, 성질, 상   태 따위를 설명하는 말   이다. 성격에 따라 목   적이 되는 말이나 보충   하는 말을 필요로 한    다.

명칭

주어

목적어, 보어

서술어

                                                                              


2006/09/08 16:25 2006/09/08 16:25
이 글에는 트랙백을 보낼 수 없습니다
웅쓰:웅자의 상상플러스
웅자의 상상플러스
전체 (379)
게임 (5)
영화 (2)
기타 (23)
맛집 (5)
영어 (2)
대수학 (3)
형태소 (5)
Hacking (9)
Linux (112)
HTML (48)
Application_developing (48)
Web_developing (102)
Window (11)
«   2024/12   »
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        
  1. 2016/01 (1)
  2. 2015/12 (3)
  3. 2015/10 (3)
  4. 2015/03 (2)
  5. 2015/01 (4)