>  기사  >  백엔드 개발  >  PHP 정규식: 문자열에서 여러 하위 문자열을 추출하는 방법

PHP 정규식: 문자열에서 여러 하위 문자열을 추출하는 방법

WBOY
WBOY원래의
2023-06-23 08:38:581223검색

PHP에서 정규식은 일반적으로 사용되는 문자열 일치 도구입니다. 정규식을 통해 문자열에서 필요한 정보를 쉽게 추출할 수 있습니다. 이 기사에서는 PHP 정규 표현식을 사용하여 문자열에서 여러 하위 문자열을 추출하는 방법을 소개합니다.

  1. preg_match_all 함수
    PHP는 문자열의 특정 패턴과 일치하는 모든 하위 문자열을 찾는 데 사용할 수 있는 preg_match_all 함수를 제공합니다. 이 함수의 구문은 다음과 같습니다.
preg_match_all($pattern, $string, &$matches, $flags = PREG_PATTERN_ORDER, $offset = 0);

여기서 $pattern은 일치해야 하는 정규 표현식을 나타내고, $string은 일치해야 하는 문자열을 나타내며, $matches는 일치하는 모든 결과를 저장하는 데 사용되는 배열입니다. $flags는 PREG_PATTERN_ORDER 또는 PREG_SET_ORDER일 수 있는 일치 플래그를 나타냅니다. $offset은 일치 시작 위치를 나타내며 기본값은 0입니다.

다음은 문자열의 모든 숫자를 일치시켜야 한다고 가정하는 구체적인 예입니다.

$str = 'abc123def456ghi789jkl';
preg_match_all('/d+/', $str, $matches);
print_r($matches[0]);

출력 결과는 다음과 같습니다.

Array
(
    [0] => 123
    [1] => 456
    [2] => 789
)

결과에서 볼 수 있듯이 preg_match_all 함수에 의해 반환된 $matches 배열에서, 첫 번째 각 요소는 전체 정규식과 일치하는 결과를 나타내고, 다음 요소는 정규식의 각 괄호에 해당하는 결과를 나타냅니다.

  1. 대괄호 그룹화
    정규식에서는 대괄호를 사용하여 일치해야 하는 콘텐츠를 그룹화할 수 있습니다. 예를 들어, 괄호를 사용하여 일치해야 하는 숫자와 문자를 구분한 다음 각각 일치시킬 수 있습니다.
$str = 'abc123def456ghi789jkl';
preg_match_all('/([a-z]+)(d+)/', $str, $matches);
print_r($matches);

출력 결과는 다음과 같습니다.

Array
(
    [0] => Array
        (
            [0] => abc123
            [1] => def456
            [2] => ghi789
        )

    [1] => Array
        (
            [0] => abc
            [1] => def
            [2] => ghi
        )

    [2] => Array
        (
            [0] => 123
            [1] => 456
            [2] => 789
        )

)

결과에서 볼 수 있듯이, $matches 배열은 전체 정규식입니다. 일치 결과, 다음 요소는 정규식의 각 괄호에 대한 일치 결과에 해당합니다. 이러한 방식으로 문자열에서 여러 하위 문자열을 쉽게 추출할 수 있습니다.

  1. 비 탐욕 모드
    기본적으로 정규식은 일치, 즉 가능한 한 많은 문자를 일치시키기 위해 탐욕 모드를 사용합니다. 예를 들어, 문자열 "aabbcc"의 경우 "aa"와 "bb"가 일치하길 원합니다. 정규식 "/a.+b/"를 사용할 수 있지만 일치하는 결과는 "aabb"입니다. 우리가 기대했던 것과는 다릅니다. "aa"와 "bb".

이 문제를 해결하기 위해 가능한 한 적은 수의 문자와 일치하는 Non-greedy 모드를 사용할 수 있습니다. 정규 표현식에서는 탐욕스럽지 않은 패턴을 나타내기 위해 물음표를 사용합니다. 예를 들어, 위 예에서 "aa"와 "bb"를 일치시키려면 정규식 "/a.+?b/"를 사용합니다.

$str = 'aabbcc';
preg_match_all('/a.+?b/', $str, $matches);
print_r($matches[0]);

출력 결과는 다음과 같습니다.

Array
(
    [0] => aa
    [1] => bb
)

결과에서 볼 수 있듯이 non-greedy 모드는 필요한 결과를 정확하게 일치시키는 데 도움이 됩니다.

요약
이 글에서는 PHP 정규식을 사용하여 문자열에서 여러 하위 문자열을 추출하는 방법을 설명합니다. preg_match_all 함수와 대괄호 그룹화, 비탐욕 모드를 통해 다양한 상황에 유연하게 대처하고 필요한 정보를 추출할 수 있습니다. 실제 개발에서 정규식을 사용하면 문자열 일치의 효율성과 성공률을 크게 향상시킬 수 있습니다.

위 내용은 PHP 정규식: 문자열에서 여러 하위 문자열을 추출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.