>  기사  >  백엔드 개발  >  PHP 정규식의 메타문자에 대한 자세한 설명(코드 예)

PHP 정규식의 메타문자에 대한 자세한 설명(코드 예)

易达
易达원래의
2020-05-30 16:54:00167검색

이 글의 목표:

1. 정규식 메타문자의 정의를 이해합니다.

2. 기본 정규식에서 메타문자의 사용법을 숙지합니다.

(1) 정규식 메타문자의 정의를 이해합니다.

특별한 의미를 지닌 정규식 문자 in을 메타 문자라고 합니다. 일반적인 메타 문자는 다음과 같습니다:

, ^, $, [,], |, (,), ?*, +, {, }

(2), 기본 정규 표현식에서 메타 문자 사용법을 숙지하세요

요약:

1. 일반적으로 문자를 이스케이프하는 데 사용됩니다.
2. ^는 대상의 시작 위치(또는 여러 줄 모드에서 줄의 시작)를 나타냅니다.
3. 여러 줄 모드에서 줄 끝)
4. 기본적으로 개행 문자
5를 제외한 모든 문자와 일치합니다.
6. 정의 끝 문자를 나타냅니다.
8, (하위 그룹
9의 시작 표시를 나타냄)은 하위 그룹
10의 끝 표시를 나타냅니다. ?: 수량자로 0 또는 1 일치 항목을 나타냅니다.
11. *: 수량자로서 0개 이상의 일치를 의미합니다.
13. {: 맞춤 수량자의 시작 태그를 의미합니다. }: 수량자의 끝 표시

다음 코드는 각 요약을 연습하기 위해 하나씩 사용되며 이해를 촉진할 수 있습니다

1 일반적으로 문자를 이스케이프하는 데 사용됩니다

구체적인 코드는 다음과 같습니다.

실행 결과는 다음과 같습니다.

문자열은 다음 규칙을 따릅니다. /A/B/C/
일치 결과는 다음과 같습니다. Array ([0] => A/B/C)

2, ^ 대상의 시작 위치를 나타냅니다(또는 여러 줄 모드에서 다음은 줄의 시작입니다)

구체 코드는 다음과 같습니다.
<?php
$p = "/A\/B\/C/";//包含A/B/C字符串
$str = "A/B/C";
if (preg_match($p, $str,$math)) {
    echo &#39;该字符串符合这个规则:/A\/B\/C/<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则:/A\/B\/C/&#39;;
}
?>

실행 결과는 다음과 같습니다.

문자열은 다음과 같습니다. 규칙:

일치 결과는 다음과 같습니다. Array ( [0] => Array ( [0] => A [1] => A [2] => A ) )

3 $는 끝을 나타냅니다. 대상 위치(또는 여러 줄 모드에서는 줄 끝)

구체적인 코드는 다음과 같습니다.
<?php
$p = "/^A/m";//以A开始
$str = "Abc \nAcc \nAdd";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则:<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

실행 결과는 다음과 같습니다.

이 문자열은 이 규칙을 따릅니다.

일치하는 결과는 다음과 같습니다. Array ( [0] => Array ( [0] => A [1] => A ) )


4. 기본값 이 경우 개행 문자를 제외한 모든 문자가 일치합니다

특정 코드

<?php
$p = "/A$/m";//以A结尾的字符串
$str = "nihao A\n this is a word A";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则:<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

실행 결과는 다음과 같습니다.

문자열이 이 규칙을 따릅니다.

일치 결과는 다음과 같습니다. Array ( [0] => Array ( [0] => A,B [1] = > A-B ) )

5, [는 정의 시작 문자를 나타냅니다.

6, ]는 정의 끝 문자를 나타냅니다.

구체적인 코드는 다음과 같습니다.

<?php
$p = "/A.B/";//查找A(任何字符除了换行符外)B的字符串
$str = "A,B A-B A\nB";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

실행 결과는 다음과 같습니다.

문자열은 다음을 따릅니다. 이 규칙

일치 결과는 다음과 같습니다: Array ( [0] => Array ( [0] => 0A [1] => 1A [2] => 2A ) )

7, | Branch

구체적인 코드는 다음과 같습니다.
<?php
$p = "/[0-9]A/";//包含小于9的一个数字和A
$str = "0A 1A 2A SA";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

실행 결과는 다음과 같습니다.

문자열은 이 규칙을 따릅니다.

일치 결과는 다음과 같습니다. Array ( [0] => Array ( [0] => 0A [ 1] => 1A [2] => 2B ) )

8, (하위 그룹의 시작 표시를 나타냅니다.

9, )는 하위 그룹의 끝 표시를 나타냅니다.
<?php
$p = "/[0-9]A|[0-9]B/";//查找小于9的一个数字和A相连的字符串或者查找
                        //小于9的一个数字和B相连的字符串
$str = "0A 1A 2B 3C";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

실행 결과는 다음과 같습니다.

문자열은 이 규칙을 따릅니다.

일치 결과는 다음과 같습니다: Array ( [0] => Array ( [0] => 1-3 [1] => 2-4 ) [1] => Array ( [0 ] => 1 [1] => 2 ) [2] => 배열 ( [0] => 3 [1] => 4 ) )

10. , 이는 0회 또는 1회 일치를 의미합니다.


구체적인 코드는 다음과 같습니다.

<?php
$p = "/([0-9])-([0-9])/";
$str = "1-3 2-4 3-s";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>
실행 결과는 다음과 같습니다.

문자열은 이 규칙을 따릅니다.

일치 결과는 다음과 같습니다. Array ( [0] => Array ( [0] => H [1] => H [2] => H ) [1] => 배열 ([0] => [1] => [2] )

11. : 수량자로서 0번 또는 여러 번 일치함을 의미합니다.

<?php
$p = "/(A[0-9])?H/";//查找H字符 因为?表示出现0或者1次
$str = "A1AH AsH BH";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

실행 결과:

문자열이 이 규칙을 따릅니다.

일치 결과: Array ( [0] => Array ( [0] => ; H [1] => A1H [ 2] => A2H [3] => A2A2H ) [1] => 배열 ([0] => A1 [2] => ; A2 [3] => A2 ) )

12, +: 하나 이상의 일치를 나타내는 수량자


구체적인 코드는 다음과 같습니다.

<?php
$p = "/(A[0-9])*H/";//查找H字符 因为*表示出现0或者多次所以和?的结果不同
$str = "A1AH A1H A2H A2A2H";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>
실행 결과는 다음과 같습니다.

문자열은 이 규칙을 따릅니다

일치 결과는 다음과 같습니다: Array ( [0] => Array ( [0] => A1H [1] => A2H [2] => A2A2H ) [1] => Array ( [0] => A1 [1] => A2 [ 2] => A2 ) )

13, { : 사용자 정의 수량자의 시작 태그를 나타냅니다.


14, } : 종료 태그를 나타냅니다. 사용자 정의 수량자

구체적인 코드는 다음과 같습니다.

<?php
$p = "/(A[0-9])+H/";//查找H字符 前面至少包含A和一个<9的数字相连
$str = "A1AH A1H A2H A2A2H";
if (preg_match_all($p, $str,$math)) {
    echo &#39;该字符串符合这个规则<br/>&#39;;
    echo "匹配结果为:";
    print_r($math);
}else{
    echo &#39;该字符串不符合这个规则&#39;;
}
?>

실행 결과는 다음과 같습니다.

문자열은 이 규칙을 따릅니다.

일치 결과는 다음과 같습니다: Array ( [0] => Array ( [0] = > dd [1] => dd [2] => dd ) )

요약:


1. 기본 정규식에서 메타문자의 사용법을 숙지하세요

위 내용은 PHP 정규식의 메타문자에 대한 자세한 설명(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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