PHP 정규식에서 중괄호

연산자 +, *, ?는 좋지만, 구체적인 반복 횟수를 지정할 수는 없습니다. 이 경우 연산자 {}가 도움이 될 것입니다.

작동 방식은 다음과 같습니다: {5} - 다섯 번 반복, {2,5} - 두 번부터 다섯 번까지 반복 (양쪽 포함), {2,} - 두 번 이상 반복.

예제

이 예제에서 검색 패턴은 다음과 같습니다: 문자 'x', 문자 'a' 한 번 또는 두 번, 문자 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{1,2}x#', '!', $str);
?>

결과로 변수에 다음이 기록됩니다:

php'xx ! ! xaaax'

예제

이 예제에서 검색 패턴은 다음과 같습니다: 문자 'x', 문자 'a' 두 번 이상, 문자 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{2,}x#', '!', $str);
?>

결과로 변수에 다음이 기록됩니다:

php'xx xax ! !'

예제

이 예제에서 검색 패턴은 다음과 같습니다: 문자 'x', 문자 'a' 세 번, 문자 'x':

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{3}x#', '!', $str);
?>

결과로 변수에 다음이 기록됩니다:

php'xx xax xaax !'

예제

이 예제에서 검색 패턴은 다음과 같습니다: 문자 'a' 열 번:

php<?php
  $str = 'aaa aaaaaaaaaa aaa';
  $res = preg_replace('#a{10}#', '!', $str);
?>

결과로 변수에 다음이 기록됩니다:

php'aaa ! aaa'

예제

이 예제에서 코드 작성자는 다음 패턴을 원했습니다: 문자 'x', 문자 'a' 세 번 이하, 문자 'x', 하지만 안타깝게도 이런 형식 - {,3} - 은 작동하지 않습니다. 명시적으로 지정해야 합니다:

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{1,3}x#', '!', $str);
?>

결과로 변수에 다음이 기록됩니다:

php'xx ! ! !'

예제

영(0)도 허용됩니다:

php<?php
  $str = 'xx xax xaax xaaax';
  $res = preg_replace('#xa{0,3}x#', '!', $str);
?>

결과로 변수에 다음이 기록됩니다:

php'! ! ! !'

실습 문제

Задание 1

다음 문자열이 주어졌습니다:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

문자열 'abba', 'abbba', 'abbbba' 만 찾는 정규식을 작성하세요.

Задание 2

다음 문자열이 주어졌습니다:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

'b'가 세 번 이하(포함) 나타나는 'aba' 형태의 문자열을 찾는 정규식을 작성하세요.

Задание 3

다음 문자열이 주어졌습니다:

php<?php
  $str = 'aa aba abba abbba abbbba abbbbba';
?>

'b'가 네 번 이상(포함) 나타나는 'aba' 형태의 문자열을 찾는 정규식을 작성하세요.