
PHP의 RegexIterator::getPregFlags 메서드는 정규표현식의 플래그를 반환합니다. 플래그는 정규표현식의 동작을 변경하는 옵션입니다.
- 'i' 플래그는 대소문자를 구별하지 않습니다. 예를 들어, '/Hello/i' 정규표현식은 'Hello'와 'hello' 모두 매칭합니다. 그러나 '/Hello/i' 정규표현식은 'HELLO'와 매칭하지 않습니다. 이 이유는 '/Hello/i' 정규표현식은 대소문자를 구별하지 않지만, 'HELLO'는 대문자이기 때문입니다.
- 'm' 플래그는 멀티라인 모드를 활성화합니다. 멀티라인 모드는 '^'와 '$'가 문자열의 시작과 끝을 의미하도록 변경합니다. 예를 들어, '/^Hello/m' 정규표현식은 문자열의 시작에 'Hello'를 매칭합니다.
- 's' 플래그는 DOTALL 모드를 활성화합니다. DOTALL 모드는 '.'이 모든 문자를 매칭하도록 변경합니다. 예를 들어, '/Hello.s' 정규표현식은 'Hello\nWorld'와 매칭합니다.
위 예시에서 '/Hello/i' 정규표현식의 플래그는 'i' 플래그 하나만 사용하였습니다. 이 플래그는 'Hello'와 'hello'을 모두 매칭하는지 확인하고 싶습니다. 그러나 실제로 'hello'는 매칭되지 않습니다. 이유는 '/Hello/i' 정규표현식은 대소문자를 구별하지 않지만, 'Hello'는 대문자이기 때문입니다.
위 예시에서 '/Hello/' 정규표현식의 플래그를 사용하지 않은 경우에 대해 설명해드리겠습니다. 이 경우 '/Hello/' 정규표현식은 'Hello'와 매칭합니다. 그러나 '/Hello/' 정규표현식은 'hello'와 매칭하지 않습니다. 이유는 '/Hello/' 정규표현식은 대소문자를 구별하기 때문입니다.
정규표현식의 플래그를 사용하는 방법은 다음과 같습니다.
#hostingforum.kr
php
$iterator = new RegexIterator(new ArrayIterator(['Hello', 'hello']), '/Hello/i');
print_r($iterator);
위 예시에서 '/Hello/i' 정규표현식의 플래그는 'i' 플래그 하나만 사용하였습니다. 이 플래그는 'Hello'와 'hello'을 모두 매칭하는지 확인하고 싶습니다. 그러나 실제로 'hello'는 매칭되지 않습니다. 이유는 '/Hello/i' 정규표현식은 대소문자를 구별하지 않지만, 'Hello'는 대문자이기 때문입니다.
위 예시에서 '/Hello/' 정규표현식의 플래그를 사용하지 않은 경우에 대해 설명해드리겠습니다. 이 경우 '/Hello/' 정규표현식은 'Hello'와 매칭합니다. 그러나 '/Hello/' 정규표현식은 'hello'와 매칭하지 않습니다. 이유는 '/Hello/' 정규표현식은 대소문자를 구별하기 때문입니다.
2025-04-15 23:40