정규식에서의 문자 반복 연산자
문자가 특정 횟수만큼 반복된다는 것을 표시하고 싶을 때가 있습니다.
정확한 반복 횟수를 알고 있다면, 그냥 여러 번 쓰면 됩니다
- #aaaa#. 하지만 한 번 이상 반복이라고 말하고 싶다면
어떻게 해야 할까요?
이를 위해 (수량자)라는 반복 연산자가 있습니다:
플러스 + (한 번 이상),
별표 * (0번 이상), 그리고
물음표 ? (0번 또는 한 번). 이
연산자들은 앞에 있는 문자에 작용합니다.
예제를 통해 이 연산자들의 동작을 살펴보겠습니다.
예제
패턴 문자
'x', 문자 'a' 한 번 이상,
문자 'x'에 맞는 모든 부분 문자열을 찾아봅시다:
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa+x#', '!', $str);
?>
결과적으로 변수에는 다음이 저장됩니다:
'xx ! ! ! xbx'
예제
패턴 문자
'x', 문자 'a' 0번 이상,
문자 'x'에 맞는 모든 부분 문자열을 찾아봅시다:
<?php
$str = 'xx xax xaax xaaax xbx';
$res = preg_replace('#xa*x#', '!', $str);
?>
결과적으로 변수에는 다음이 저장됩니다:
'! ! ! ! xbx'
예제
패턴 문자
'x', 문자 'a' 0번 또는 한 번,
문자 'x'에 맞는 모든 부분 문자열을 찾아봅시다:
<?php
$str = 'xx xax xaax xbx';
$res = preg_replace('#xa?x#', '!', $str);
?>
결과적으로 변수에는 다음이 저장됩니다:
'! ! xaax xbx'
실습 문제
다음 문자열이 주어졌을 때:
<?php
$str = 'aa aba abba abbba abca abea';
?>
패턴 문자 'a', 문자 'b'
한 번 이상, 문자 'a'에 맞는 문자열을 찾는
정규식을 작성하세요.
다음 문자열이 주어졌을 때:
<?php
$str = 'aa aba abba abbba abca abea';
?>
패턴 문자 'a', 문자 'b'
0번 이상, 문자 'a'에 맞는 문자열을 찾는
정규식을 작성하세요.
다음 문자열이 주어졌을 때:
<?php
$str = 'aa aba abba abbba abca abea';
?>
패턴 문자 'a', 문자 'b'
한 번이거나 없거나, 문자 'a'에 맞는 문자열을 찾는
정규식을 작성하세요.
다음 문자열이 주어졌을 때:
<?php
$str = 'aa aba abba abbba abca abea';
?>
'aa', 'aba', 'abba',
'abbba'는 찾되, 'abca'
와 'abea'는 찾지 않는 정규식을 작성하세요.