PHP 정규 표현식의 문자 집합
문자 그룹 \d와 \w는
매우 유연하지 않습니다. 모든 문자를 찾되 숫자는 제외하기와 같은
간단한 작업조차도 이들로는 해결할 수 없습니다. 이러한 작업에는
또는 연산을 나타내는 대괄호를 사용해야 합니다.
대괄호는 그 안에 나열된 문자 중 하나를 대체합니다.
예를 들어, 이렇게요: #x[abc]x# - 우리는
양쪽 끝에 문자 x가 있어야 하고, 그 사이에
- 하나의 문자가 있어야 한다고 말합니다: 'a', 또는 'b',
또는 'c'.
대괄호 뒤에는 반복 연산자를 쓸 수 있습니다.
예를 들어, 이렇게요: #x[abc]+x#
- 우리는 x 사이에
'a', 'b', 'c' 문자가
어떤 조합으로든 임의의 수만큼 있을 수 있다고 말합니다.
문자를 나열하는 것뿐만 아니라, 두 문자 사이에
하이픈을 넣어 문자 그룹을 만들 수도 있습니다.
예를 들어, 이렇게요: #[a-d]#
- 우리는 'a'부터
'd'까지의 모든 문자를 얻습니다.
예제를 통해 살펴봅시다.
예제
이 예제에서 검색 패턴은 다음과 같습니다:
x 사이에 'a'부터
'z'까지의 모든 문자:
<?php
$str = 'xax xbx xcx x@x';
$res = preg_replace('#x[a-z]x#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'! ! ! x@x'
예제
이 예제에서 검색 패턴은 다음과 같습니다:
x 사이에 'a'부터
'k'까지의 모든 문자:
<?php
$str = 'xax xbx xmx x@x';
$res = preg_replace('#x[a-k]x#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'! ! xmx x@x'
예제
이 예제에서 검색 패턴은 다음과 같습니다:
x 사이에 'A'부터
'Z'까지의 모든 문자:
<?php
$str = 'xax xBx xcx x@x';
$res = preg_replace('#x[A-Z]x#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'xax ! xcx x@x'
예제
이 예제에서 검색 패턴은 다음과 같습니다:
x 사이에 0부터 9까지의 모든 숫자:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[0-9]x#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'xax ! ! ! x@x'
예제
이 예제에서 검색 패턴은 다음과 같습니다:
x 사이에 3부터 7까지의 모든 숫자:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[3-7]x#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'xax x1x ! ! x@x'
예제
이 예제에서 검색 패턴은 다음과 같습니다:
x 사이에 'a'부터
'z'까지의 모든 문자 또는 1부터 9까지의 숫자:
<?php
$str = 'xax x1x x3x x5x x@x';
$res = preg_replace('#x[a-z1-9]x#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'! ! ! ! x@x'
예제
이 예제에서 검색 패턴은 다음과 같습니다:
x 사이에 'a'부터
'z'까지의 모든 문자 또는 'A'부터
'Z'까지의 모든 문자:
<?php
$str = 'xax xBx xcx x5x x@x';
$res = preg_replace('#x[a-zA-Z]x#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'! ! ! x5x x@x'
예제
이 예제에서 검색 패턴은 다음과 같습니다:
x 사이에 'a'부터
'z'까지의 모든 문자 또는 숫자 1, 2:
<?php
$str = 'xax xbx x1x x2x x3x';
$res = preg_replace('#x[a-z12]x#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'! ! ! ! x3x'
예제
이 예제에서 검색 패턴은 다음과 같습니다:
x 사이에 'a'부터 'z'까지의
문자가 1개 이상:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]+x#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'xx ! ! ! x123x xa3x'
예제
문자 수가 0일 수도 있도록 만들어 봅시다:
<?php
$str = 'xx xabesx xaadx x123x xa3x';
$res = preg_replace('#x[a-z]*x#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'! ! ! x123x xa3x'
실습 문제
다음 문자열이 주어졌습니다:
<?php
$str = 'aba aea aca aza axa';
?>
다음 패턴에 맞는 정규 표현식을 작성하세요: 양쪽 끝에 문자 'a'가 있고,
그 사이에 - 문자 'b', 'e'
또는 'x'가 있습니다.
다음 문자열이 주어졌습니다:
<?php
$str = 'a1a a3a a7a a9a aba';
?>
다음 패턴에 맞는 정규 표현식을 작성하세요: 양쪽 끝에 문자 'a'가 있고,
그 사이에 - 3부터 6까지의 숫자가 있습니다.
다음 문자열이 주어졌습니다:
<?php
$str = 'aba aea afa aha aga';
?>
다음 패턴에 맞는 정규 표현식을 작성하세요: 양쪽 끝에 문자 'a'가 있고,
그 사이에 - a부터 g까지의 문자가 있습니다.
다음 문자열이 주어졌습니다:
<?php
$str = 'aba aea afa aha aga';
?>
다음 패턴에 맞는 정규 표현식을 작성하세요: 양쪽 끝에 문자 'a'가 있고,
그 사이에 - a부터 f까지와 j부터 z까지의 문자가 있습니다.
다음 문자열이 주어졌습니다:
<?php
$str = 'aAa aea aEa aJa a3a';
?>
다음 패턴에 맞는 정규 표현식을 작성하세요: 양쪽 끝에 문자 'a'가 있고,
그 사이에 - a부터 f까지와 A부터 D까지의 문자가 있습니다.
다음 문자열이 주어졌습니다:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
다음 패턴에 맞는 정규 표현식을 작성하세요: 양쪽 끝에 문자 'a'가 있고,
그 사이에 - 소문자 라틴 문자만 있으며, 나머지는 건드리지 않습니다.
다음 문자열이 주어졌습니다:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
다음 패턴에 맞는 정규 표현식을 작성하세요: 양쪽 끝에 문자 'a'가 있고,
그 사이에 - 소문자와 대문자 라틴 문자가 있으며, 나머지는 건드리지 않습니다.
다음 문자열이 주어졌습니다:
<?php
$str = 'aAXa aeffa aGha aza ax23a a3sSa';
?>
다음 패턴에 맞는 정규 표현식을 작성하세요: 양쪽 끝에 문자 'a'가 있고,
그 사이에 - 소문자 라틴 문자와 숫자가 있으며, 나머지는 건드리지 않습니다.