PHP 정규식에서 중괄호
연산자 +, *, ?는 좋지만,
구체적인 반복 횟수를 지정할 수는 없습니다.
이 경우 연산자 {}가 도움이 될 것입니다.
작동 방식은 다음과 같습니다: {5}
- 다섯 번 반복, {2,5} - 두 번부터 다섯 번까지 반복
(양쪽 포함), {2,}
- 두 번 이상 반복.
예제
이 예제에서 검색 패턴은 다음과 같습니다:
문자 'x', 문자 'a' 한 번
또는 두 번, 문자 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
결과로 변수에 다음이 기록됩니다:
'xx ! ! xaaax'
예제
이 예제에서 검색 패턴은 다음과 같습니다:
문자 'x', 문자 'a' 두 번
이상, 문자 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
결과로 변수에 다음이 기록됩니다:
'xx xax ! !'
예제
이 예제에서 검색 패턴은 다음과 같습니다:
문자 'x', 문자 'a' 세 번,
문자 'x':
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
결과로 변수에 다음이 기록됩니다:
'xx xax xaax !'
예제
이 예제에서 검색 패턴은 다음과 같습니다:
문자 'a' 열 번:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
결과로 변수에 다음이 기록됩니다:
'aaa ! aaa'
예제
이 예제에서 코드 작성자는 다음 패턴을 원했습니다:
문자 'x', 문자 'a' 세 번
이하, 문자 'x',
하지만 안타깝게도 이런 형식 - {,3} - 은
작동하지 않습니다. 명시적으로 지정해야 합니다:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
결과로 변수에 다음이 기록됩니다:
'xx ! ! !'
예제
영(0)도 허용됩니다:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
결과로 변수에 다음이 기록됩니다:
'! ! ! !'
실습 문제
다음 문자열이 주어졌습니다:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
문자열
'abba', 'abbba', 'abbbba'
만 찾는 정규식을 작성하세요.
다음 문자열이 주어졌습니다:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
'b'가 세 번 이하(포함) 나타나는
'aba' 형태의 문자열을 찾는 정규식을 작성하세요.
다음 문자열이 주어졌습니다:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
'b'가 네 번 이상(포함) 나타나는
'aba' 형태의 문자열을 찾는 정규식을 작성하세요.