Atom
Atom은 정규식에서 가장 작은 단위입니다. 직설적으로 말하면 Atom은 일치해야 하는 내용입니다. 유효한 정규 표현식에는 하나 이상의 원자가 포함되어야 합니다.
보이는 문자와 보이지 않는 문자는 모두 원자입니다.
설명: 공백, 캐리지 리턴, 줄 바꿈, 0-9, A-Za-z, 중국어, 구두점을 볼 수 있습니다. 표시, 특수 기호는 모두 원자입니다.
원자적 예제를 수행하기 전에 먼저 preg_match 함수를 설명하겠습니다.
int preg_match ( string $regular, string $string[, array &$result] )
함수: $regular 변수를 기준으로 $string 변수를 일치시킵니다. 존재하는 경우 일치 항목 수를 반환하고 일치된 결과를 $result 변수에 넣습니다. 결과가 없으면 0이 반환됩니다.
참고: 위는 preg_match에서 일반적으로 사용되는 주요 매개변수입니다. 위에는 다른 여러 매개변수를 나열하지 않았습니다. 다른 두 매개변수는 너무 드물기 때문입니다.
실험을 통해 증명해보자:
<?php //定义一个变量叫zz,放正则表达示。为了方便大家记忆,如果你英文比较ok,建议把变量名还是写成英文的$pattern。 $zz = '/a/'; $string = 'ddfdjjvi2jfvkwkfi24'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
a를 매칭하고 싶은데 $string에 a가 존재하지 않아 실패하기 때문이다.
<?php $zz = '/wq/'; $string = 'ssssswqaaaaaa'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
위 문자열에서 s 뒤에 wq가 있으므로 일치가 성공한 것입니다.
다음으로 공백 일치를 시도해 보겠습니다.
<?php $zz = '/ /'; $string = 'sssssw aaaaa'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
실행 결과는 다음과 같습니다.
이 때문에 $ string is 변수의 w 문자 뒤에 공백이 있습니다. 따라서 일치가 성공하고 문자열 유형의 길이가 1로 출력됩니다. 단지 우리의 육안으로는 보이지 않아서 이 끈을 볼 수 없습니다.
특별히 표시된 원자
原子 | 说明 |
---|---|
d | 匹配一个0-9 |
D | 除了0-9以外的所有字符 |
w | a-zA-Z0-9_ |
W | 除了0-9A-Za-z_以外的所有字符 |
s | 匹配所有空白字符n t r 空格 |
S | 匹配所有非空白字符 |
[ ] | 指定范围的原子 |
이 점을 기억해두셔야 합니다. 받아쓰기 수준에 도달하는 것이 가장 좋습니다. 암기할 때 쌍으로 기억하세요. d는 0-9와 일치하고 D는 0-9를 제외한 모든 문자입니다.
위 내용은 매우 명확하게 설명되어 있습니다. 단계별로 학습하기 위한 실험을 진행해 보겠습니다.
공부하실 때 꼭 이 원자에 대한 받아쓰기 수준에 도달하시기 바랍니다. 왜냐하면 앞으로 실험을 하면 조금씩 배울 것이기 때문입니다.
d는 0-9 값과 일치
<?php $zz = '/\d/'; $string = '我爱喝9你爱不爱喝'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
D는 0-9 이외의 값과 일치
<?php $zz = '/\D/'; $string = '121243中23453453'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
성공적으로 경기를 성공적으로 마쳤습니다. 0~9 사이의 문자가 아니기 때문입니다.
w는 a-zA-Z0-9_
<?php $zz = '/\w/'; $string = '新中_国万岁呀万岁'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
와 일치합니다. 일치가 성공하고 밑줄이 일치합니다.
W는 a-zA-Z0-9_
<?php $zz = '/\w/'; $string = 'afasABCWEQR44231284737'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
와 일치하지 않습니다. 왜냐하면 위의 내용은 모두 a-zA-Z0-9_이고, a-zA-Z0-9_가 아닌 것은 없기 때문입니다.
s는 모든 공백 문자 n t r 공백과 일치합니다.
<?php $zz = '/\s/'; $string = "中国万 岁"; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
는 캐리지 리턴이 있으므로 성공적으로 일치합니다.
S개의 비어 있지 않은 문자
<?php $zz = '/\s/'; $string = " a "; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
가 성공적으로 일치합니다. 공백이 있더라도 캐리지 리턴 및 들여쓰기가 수행됩니다. 그러나 공백이 아닌 문자 a가 있습니다. 따라서 경기는 성공합니다.
[] 지정된 범위의 원자
<?php $zz = '/[0-5]\w+/'; $string = '6a'; $string1 = '1C'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
결론:
위의 예에서 0-5는 $string과 일치하지 못했습니다. , $string1 성공. 왜냐하면 $string의 첫 번째 값은 6이며 이는 [0-5] 범위에 속하지 않습니다.
<?php $zz = '/[a-zA-Z0-9_]\w/'; $string = 'ab'; $string1 = '9A'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
결론:
$string과 $string1은 모두 성공적으로 일치합니다. w는 [a-zA-Z0-9_]
<?php $zz = '/[abc]\d+/'; $string = 'a9'; $string1 = 'b1'; $string2 = 'c5'; $string3 = 'd4'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
결론:
$string, $string1, $string2는 성공적으로 일치했지만 $string3은 실패했습니다. $string3이 [abc]의 범위를 초과하므로 d부터 시작됩니다.
[^ 문자]는 지정된 범위의 문자와 일치하지 않습니다.
<?php $zz = '/[^0-9A-Za-z_]/'; $string = 'aaaaab311dd'; $string1 = '!$@!#%$#^##'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
결론:
1. $string 일치 failed 이지만 $string1과 일치하면 성공합니다. 대괄호 안에 곡절 기호가 있기 때문입니다.
2.^ 대괄호 안의 곡절 문자의 기능은 대괄호 안의 문자와 일치하지 않는 것입니다.
요약:
原子 | 等价式 |
---|---|
w | [a-zA-Z0-9_] |
W | [^a-zA-Z0-9_] |
d | [0-9] |
D | [^0-9] |
s | [ tnfr] |
S | [^ tnfr] |