로그인 회원가입
모두인포
전체IT경제사회생활스포츠시사여행연애

PHP 정규 표현식(Regular Expression, RegExp)

lmkfox · 2025-08-08 · 조회 0
PHP 정규 표현식(Regular Expression, RegExp)
1. 정규 표현식 함수 개요 PHP에서 사용하는 주요 정규 표현식 함수는 다음과 같습니다: 함수 설명 preg_match() 패턴이 문자열에 일치하는지 확인 preg_match_all() 모든 일치 항목 찾기 preg_replace() 일치하는 문자열을 다른 문자열로 변경 preg_split() 패턴을 기준으로 문자열 분할 preg_grep() 배열에서 패턴과 일치하는 항목만 추출 2. 패턴 기본 구조 정규 표현식은 /패턴/플래그 형식으로 사용합니다. 예: /hello/i - /: 구분자 (대부분 / 사용) - hello: 검색할 패턴 - i: 대소문자 구분 없음 (플래그) 3. preg_match()  사용법 $pattern = "/php/i"; $str = "I love PHP!"; if (preg_match($pattern, $str)) { echo "일치함"; } else { echo "일치하지 않음"; } 4. 자주 쓰는 정규식 문법 문자 클래스 패턴 의미 . 임의의 한 문자 \d 숫자 ([0-9]) \D 숫자가 아님 ([^0-9]) \w 단어 문자 ([a-zA-Z0-9_]) \W 단어 문자가 아님 \s 공백 문자 (스페이스, 탭, 개행 등) \S 공백 문자가 아님 수량자 패턴 의미 * 0회 이상 반복 + 1회 이상 반복 ? 0 또는 1회 반복 {n} n회 반복 {n,} n회 이상 반복 {n,m} n~m회 반복 예: preg_match("/a{2,4}/", "aaab"); // a가 2~4회 반복되는지 확인 그룹화 및 선택 패턴 의미 (...) 그룹 (?:...) 캡처하지 않는 그룹 `a b` 5. preg_match_all()  예제 $str = "Email: john@example.com, jane@domain.net"; $pattern = "/[\w\.-]+@[\w\.-]+\.\w+/"; preg_match_all($pattern, $str, $matches); print_r($matches[0]); // 결과: ["john@example.com", "jane@domain.net"] 6.  preg_replace()  예제 $str = "010-1234-5678"; $pattern = "/(\d{3})-(\d{4})-(\d{4})/"; $replacement = "$1 **** $3"; echo preg_replace($pattern, $replacement, $str); // 출력: 010 **** 5678 7.  preg_split()  예제 $str = "apple,banana orange;grape"; $pattern = "/[\s,;]+/"; $fruits = preg_split($pattern, $str); print_r($fruits); // 결과: ["apple", "banana", "orange", "grape"] 8. 플래그(옵션) 플래그 설명 i 대소문자 구분 없음 m 여러 줄 모드 (줄마다 ^, $ 적용) s 줄바꿈 문자를 포함하여 .이 모든 문자와 일치 u 유니코드 지원 (UTF-8 문자열 처리 시 필수) x 공백과 주석 무시 (가독성 향상용) 9. 실제 예제: 이메일 유효성 검사 $email = "user@example.com"; $pattern = "/^[\w\.-]+@[\w\.-]+\.\w+$/"; if (preg_match($pattern, $email)) { echo "유효한 이메일"; } else { echo "유효하지 않음"; } 10. 멀티바이트 문자열과 정규표현식 UTF-8 문자열을 다룰 경우, 반드시 u 플래그를 사용해야 정확한 문자 인식을 할 수 있습니다. $str = "안녕하세요"; $pattern = "/^안녕/u"; if (preg_match($pattern, $str)) { echo "일치함"; } 11. 유의사항 - 정규표현식 구분자(/) 대신 #, ~ 등도 사용 가능하며, 구분자 충돌 방지를 위해 사용됨. - 패턴 내에서 백슬래시(\)는 PHP 코드에서는 이중(\\)으로 써야 함. - 복잡한 패턴은 테스트 사이트(예: regex101.com)에서 실시간 확인 가능. 결론 PHP의 정규 표현식은 문자열의 유효성 검사, 파싱, 치환, 추출에 매우 유용합니다. preg_* 함수와 PCRE 문법을 정확히 익히면 웹 개발에서 사용자 입력 검증이나 로그 분석 등의 작업을 강력하게 처리할 수 있습니다.

댓글

아직 댓글이 없습니다.

로그인 후 댓글을 남길 수 있습니다.