PHP 정규식 내 문자 집합 안의 캐럿 기호
아시다시피, [] 안의 캐럿 기호는
대괄호의 시작 부분에 위치할 때 부정(negation)을 의미합니다.
즉, 이 기호는 대괄호 안에서 특수문자 역할을 합니다.
캐럿 기호를 일반 문자로 사용하려면,
이스케이프하거나 첫 번째 위치에서 제거해야 합니다.
예시
다음 예시에서 검색 패턴은 다음과 같습니다:
첫 번째 문자는 'd'를 제외한 모든 문자,
그 다음에 'x' 두 개.
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[^d]xx#', '!', $str);
?>
결과적으로 변수에는 다음이 저장됩니다:
'! ! ! dxx'
예시
이제 검색 패턴은 다음과 같습니다: 첫 번째 문자는
'd' 또는 '^', 그 다음에
'x' 두 개:
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[d^]xx#', '!', $str);
?>
결과적으로 변수에는 다음이 저장됩니다:
'axx bxx ! !'
예시
첫 번째 위치에서 캐럿 기호를 제거하지 않고, 백슬래시로 이스케이프하여 문자 그 자체를 의미하도록 할 수 있습니다:
<?php
$str = 'axx bxx ^xx dxx';
$res = preg_replace('#[\^d]xx#', '!', $str);
?>
결과적으로 변수에는 다음이 저장됩니다:
'axx bxx ! !'
실습 문제
다음 문자열이 주어졌습니다:
<?php
$str = '^xx axx ^zz bkk @ss';
?>
다음 패턴에 맞는 문자열을 찾는 정규식을 작성하세요: 캐럿 기호 또는 골뱅이(@) 기호, 그리고 그 뒤에 라틴 문자 두 개.
다음 문자열이 주어졌습니다:
<?php
$str = '^xx axx ^zz bkk @ss';
?>
다음 패턴에 맞는 문자열을 찾는 정규식을 작성하세요: 캐럿 기호도 아니고 골뱅이(@) 기호도 아니며, 그리고 그 뒤에 라틴 문자 두 개.
다음 문자열이 주어졌습니다:
<?php
$str = '^xx axx ^zz bkk';
?>
다음 패턴에 맞는 문자열을 찾는 정규식을 작성하세요: 캐럿 기호가 아니며, 그리고 그 뒤에 라틴 문자 두 개.