PHP

PHP에서 정규 표현식 사용하기

thebasics 2024. 9. 12. 10:00

목차
1. 정규 표현식이란 무엇인가?
   - 정규 표현식의 개념
   - 정규 표현식의 활용 사례
2. PHP에서 정규 표현식 사용하기
   - preg_match 사용법
   - preg_match_all 사용법
3. preg_replace를 사용한 문자열 치환
   - 기본 치환 예제
   - 고급 치환 패턴
4. 코드 예제
5. 결론 및 추가 학습 자료


1. 정규 표현식이란 무엇인가?

정규 표현식의 개념

정규 표현식(Regular Expression)은 문자열에서 특정 패턴을 찾고, 추출하거나, 치환하는 데 사용되는 강력한 도구입니다. 정규 표현식은 복잡한 문자열 검색 및 조작을 효율적으로 수행할 수 있게 해주며, 다양한 프로그래밍 언어에서 지원됩니다. PHP에서는 'preg_' 계열의 함수를 통해 정규 표현식을 활용할 수 있습니다.

정규 표현식의 활용 사례

- 입력 값 유효성 검사: 이메일 주소, 전화번호, 우편번호 등의 형식을 검사할 때 사용됩니다.
- 문자열 검색 및 추출: 특정 패턴을 가진 문자열을 검색하고 추출할 때 유용합니다.
- 문자열 치환: 텍스트 내에서 특정 패턴을 가진 문자열을 다른 문자열로 치환할 수 있습니다.
- 로그 분석 및 데이터 추출: 로그 파일에서 특정 정보를 추출하거나 분석할 때 사용됩니다.


2. PHP에서 정규 표현식 사용하기

preg_match 사용법

'preg_match' 함수는 정규 표현식을 사용하여 문자열에서 특정 패턴과 일치하는지 여부를 확인합니다. 첫 번째로 일치하는 패턴을 찾으면 즉시 검색을 멈추고 결과를 반환합니다.

<?php
$pattern = "/^hello/";
$subject = "hello world";

if (preg_match($pattern, $subject)) {
    echo "패턴과 일치합니다.";
} else {
    echo "패턴과 일치하지 않습니다.";
}
?>

이 예제에서 'preg_match' 함수는 문자열이 "hello"로 시작하는지 확인하고, 일치 여부에 따라 메시지를 출력합니다.

preg_match_all 사용법

'preg_match_all' 함수는 정규 표현식을 사용하여 문자열에서 모든 일치하는 패턴을 찾습니다. 이 함수는 배열 형태로 결과를 반환하며, 일치하는 모든 패턴을 찾아줍니다.

<?php
$pattern = "/\d+/";
$subject = "There are 3 apples, 5 oranges, and 12 bananas.";

preg_match_all($pattern, $subject, $matches);

print_r($matches);
?>

이 예제에서는 숫자('\d+') 패턴을 찾기 위해 'preg_match_all' 함수를 사용하며, 모든 일치하는 숫자를 배열로 반환합니다.


3. preg_replace를 사용한 문자열 치환

기본 치환 예제

'preg_replace' 함수는 정규 표현식을 사용하여 문자열에서 특정 패턴을 찾아 다른 문자열로 치환합니다. 이 함수는 주어진 패턴과 일치하는 모든 부분을 찾아 치환합니다.

<?php
$pattern = "/\d+/";
$replacement = "#";
$subject = "My phone number is 123456789.";

$result = preg_replace($pattern, $replacement, $subject);

echo $result;
?>

이 예제에서는 숫자 패턴을 모두 "#"으로 치환하여 출력합니다. 결과는 다음과 같습니다:

My phone number is #.

고급 치환 패턴

'preg_replace' 함수는 복잡한 치환 패턴을 처리할 수 있으며, 캡처 그룹을 사용하여 치환하는 동안 원래 패턴의 일부를 유지할 수 있습니다.

<?php
$pattern = "/(\d{3})(\d{4})(\d{4})/";
$replacement = "$1-$2-$3";
$subject = "My phone number is 12345678901234.";

$result = preg_replace($pattern, $replacement, $subject);

echo $result;
?>

이 예제에서는 전화번호의 숫자 그룹을 'preg_replace'를 사용하여 "123-4567-8901" 형식으로 변환합니다.


4. 코드 예제

다음은 PHP에서 정규 표현식을 사용하여 문자열 검색, 추출, 치환을 수행하는 종합적인 예제입니다.

<?php
// 패턴: 이메일 주소 검증
$emailPattern = "/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/";
$email = "example@example.com";

if (preg_match($emailPattern, $email)) {
    echo "유효한 이메일 주소입니다.\n";
} else {
    echo "유효하지 않은 이메일 주소입니다.\n";
}

// 패턴: 모든 숫자 추출
$text = "Order 1: $25, Order 2: $35, Order 3: $45";
preg_match_all("/\d+/", $text, $numbers);
print_r($numbers);

// 패턴: 특정 단어 치환
$phrase = "The quick brown fox jumps over the lazy dog.";
$replacedPhrase = preg_replace("/quick|lazy/", "smart", $phrase);
echo $replacedPhrase;
?>

코드 분석:
- 첫 번째 부분에서는 이메일 주소의 유효성을 검증하는 정규 표현식을 사용합니다.
- 두 번째 부분에서는 텍스트에서 모든 숫자를 추출합니다.
- 세 번째 부분에서는 "quick"과 "lazy"라는 단어를 "smart"로 치환하여 출력합니다.


5. 결론 및 추가 학습 자료

이번 글에서는 PHP에서 정규 표현식을 사용하는 방법에 대해 알아보았습니다. 정규 표현식은 강력한 문자열 검색 및 처리 도구로, 입력 값 유효성 검사, 데이터 추출, 텍스트 치환 등 다양한 용도로 활용될 수 있습니다. 'preg_match', 'preg_match_all', 'preg_replace'와 같은 PHP 함수는 정규 표현식을 사용하여 문자열을 처리하는 데 매우 유용합니다.

추가 학습 자료:
- [PHP 공식 문서 - 정규 표현식](https://www.php.net/manual/en/book.pcre.php) PHP의 정규 표현식 관련 함수와 사용법을 설명하는 공식 문서입니다.
- [Regex101](https://regex101.com/) 정규 표현식을 실시간으로 테스트하고 학습할 수 있는 웹 도구입니다.
- [Regular-Expressions.info](https://www.regular-expressions.info/) 정규 표현식의 기본 개념부터 고급 기능까지 다루는 학습 사이트입니다.


이제 PHP에서 정규 표현식을 사용하여 복잡한 문자열 처리를 수행할 수 있습니다. 지속적인 학습과 실습을 통해 정규 표현식을 자유자재로 활용해보세요!

반응형