PHP 정규식 표현의 원자LOGIN

PHP 정규식 표현의 원자

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 '没有匹配到';
}

?>

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

QQ截图20161114135142.png

이 때문에 $ string is 변수의 w 문자 뒤에 공백이 있습니다. 따라서 일치가 성공하고 문자열 유형의 길이가 1로 출력됩니다. 단지 우리의 육안으로는 보이지 않아서 이 끈을 볼 수 없습니다.

특별히 표시된 원자

原子说明
d匹配一个0-9
D除了0-9以外的所有字符
wa-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]
다음 섹션
<?php $zz = '/[^0-9A-Za-z_]/'; $string = 'aaaaab311dd'; $string1 = '!$@!#%$#^##'; if(preg_match($zz, $string, $matches)){ echo '匹配到了,结果为:'; var_dump($matches); }else{ echo '没有匹配到'; } ?>
코스웨어