PHP 정규 표현식의 문자 그룹
한꺼번에 문자 그룹 전체를 선택할 수 있게 해주는 특수 명령어들이 있습니다.
명령어 \d는 0부터 9까지의 숫자를 의미합니다.
명령어 \w는 숫자, 라틴 문자 또는 밑줄 문자를 나타냅니다.
명령어 \s는 공백 또는 공백 문자(스페이스, 줄바꿈, 탭)를 나타냅니다.
명령어의 의미를 반전시킬 수도 있습니다. 대문자를 사용하면 됩니다.
예를 들어, \d가 숫자라면 \D는 숫자가 아닌 문자입니다.
예제
모든 숫자를 찾아봅시다:
<?php
$str = '1 12 123';
$res = preg_replace('#\d#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'! !! !!!'
예제
반복 연산자는 문자 그룹 명령어를 하나의 단위로 간주하므로,
그룹화 괄호가 필요하지 않습니다.
다음 예제에서 검색 패턴은 0부터 9까지의 숫자가 한 번 이상입니다:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\d+#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'! ! ! abc @@@'
예제
다음 예제에서 검색 패턴은
0부터 9까지의 숫자가 아닌 문자가 한 번 이상입니다:
<?php
$str = '123abc3@@';
$res = preg_replace('#\D+#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'123!3!'
예제
이 예제에서 검색 패턴은 공백 문자 한 번입니다:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\s#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'1!12!123!abc!@@@'
예제
이 예제에서 검색 패턴은
공백 문자가 아닌 문자가 한 번 이상입니다.
공백으로 구분된 모든 부분 문자열이 '!'로 대체됩니다:
<?php
$str = '1 12 123 abc @@@';
$res = preg_replace('#\S+#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'! ! ! ! !'
예제
이 예제에서 검색 패턴은
숫자 또는 문자가 한 번 이상입니다.
숫자와 문자로 구성된 모든 부분 문자열이 '!'로 대체됩니다:
<?php
$str = '1 12 123a Abc @@@';
$res = preg_replace('#\w+#', '!', $str);
?>
결과적으로 변수에는 다음이 기록됩니다:
'! ! ! ! @@@'
예제
이 예제에서 검색 패턴은
숫자도 아니고 문자도 아닌 문자가 한 번 이상입니다.
이 정의에 따르면 우리의 경우 '@@@'와 모든 공백(그들 역시 숫자나 문자가 아니기 때문)이 해당됩니다.
끝에 하나의 '!'가 있다는 점에 유의하세요.
이는 문자열 ' @@@'(앞에 공백이 있음)가 변환된 것입니다:
$str = '1 12 123 Abc @@@';
$res = preg_replace('#\W+#', '!', $str);
결과적으로 변수에는 다음이 기록됩니다:
'1!12!123!Abc!'
실습 문제
다음 문자열이 주어졌습니다:
<?php
$str = 'a1a a2a a3a a4a a5a aba aca';
?>
양쪽 가장자리에 문자 'a'가 있고,
그 사이에 숫자 하나가 있는 문자열을 찾는 정규식을 작성하세요.
다음 문자열이 주어졌습니다:
<?php
$str = 'a1a a22a a333a a4444a a55555a aba aca';
?>
양쪽 가장자리에 문자 'a'가 있고,
그 사이에 임의의 개수의 숫자가 있는 문자열을 찾는 정규식을 작성하세요.
다음 문자열이 주어졌습니다:
<?php
$str = 'aa a1a a22a a333a a4444a a55555a aba aca';
?>
양쪽 가장자리에 문자 'a'가 있고,
그 사이에 임의의 개수의 숫자(숫자가 0개인 경우, 즉 문자열 'aa'도 포함)가 있는 문자열을 찾는 정규식을 작성하세요.
다음 문자열이 주어졌습니다:
<?php
$str = 'avb a1b a2b a3b a4b a5b abb acb';
?>
다음 유형의 문자열을 찾는 정규식을 작성하세요:
양쪽 가장자리에 문자 'a'와 'b'가 있고,
그 사이에 숫자가 아닌 문자.
다음 문자열이 주어졌습니다:
<?php
$str = 'ave a#b a2b a$b a4b a5b a-b acb';
?>
다음 유형의 문자열을 찾는 정규식을 작성하세요:
양쪽 가장자리에 문자 'a'와 'b'가 있고,
그 사이에 문자도 숫자도 아닌 문자.
다음 문자열이 주어졌습니다:
<?php
$str = 'ave a#a a2a a$a a4a a5a a-a aca';
?>
모든 공백을 '!'로 대체하는 정규식을 작성하세요.