PHP 정규 표현식에서 '또는' 명령어
이번 강의에서는 정규식을 여러 부분으로 나눌 수 있게 해주는,
명령어 []보다 더 강력한 버전의 OR인
명령어 |를 살펴보겠습니다. 이 명령어는 패턴이 정규식의
한 부분 또는 다른 부분에 일치하도록 합니다. 예제를 통해 알아보겠습니다.
예제
이 예제에서 검색 패턴은 다음과 같습니다: 문자 'a' 세 개
또는 문자 'b' 세 개:
<?php
$str = 'aaa bbb abb';
$res = preg_replace('#a{3}|b{3}#', '!', $str);
?>
결과로 변수에는 다음이 저장됩니다:
'! ! abb'
예제
이 예제에서 검색 패턴은 다음과 같습니다: 문자 'a' 세 개
또는 문자 'b' 1개 이상:
<?php
$str = 'aaa bbb bbbb bbbbb axx';
$res = preg_replace('#a{3}|b+#', '!', $str);
?>
결과로 변수에는 다음이 저장됩니다:
'! ! ! ! axx'
예제
이 예제에서 검색 패턴은 다음과 같습니다: 문자 하나 이상 또는 숫자 세 개:
<?php
$str = 'a ab abc 1 12 123';
$res = preg_replace('#[a-z]+|\d{3}#', '!', $str);
?>
결과로 변수에는 다음이 저장됩니다:
'! ! ! 1 12 !'
예제
수직 막대는 정규식을 두 부분이 아닌 여러 부분으로 나눌 수 있습니다:
<?php
$str = 'aaa bbb ccc ddd';
$res = preg_replace('#a+|b+|c+#', '!', $str);
?>
결과로 변수에는 다음이 저장됩니다:
'! ! ! ddd'
예제
수직 막대가 둥근 괄호 안에 있으면, '또는'은 해당 괄호 내부에서만 동작합니다.
예를 들어, 다음 패턴에 맞는 문자열을 찾아봅시다: 시작 부분에 'a' 또는
'b'가 한 번 이상 오고, 그 뒤에 문자 'x' 두 개:
<?php
$str = 'axx bxx bbxx exx';
$res = preg_replace('#(a|b+)xx#', '!', $str);
?>
결과로 변수에는 다음이 저장됩니다:
'! ! ! exx'
실습 문제
다음 문자열이 주어집니다:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
다음 패턴에 맞는 문자열을 찾는 정규식을 작성하세요: 양쪽 끝에는 문자 'a'가 있고,
그 사이에는 문자 'e'가 임의의 횟수 또는 문자 'x'가 임의의 횟수.
다음 문자열이 주어집니다:
<?php
$str = 'aeeea aeea aea axa axxa axxxa';
?>
다음 패턴에 맞는 문자열을 찾는 정규식을 작성하세요: 양쪽 끝에는 문자 'a'가 있고,
그 사이에는 문자 'e'가 두 번 또는 문자 'x'가 임의의 횟수.