正则表达式——从学会匹配到稍微知道概念

 
PHP 中使用正则规则一定要加代表正则的标识 / / ,且会区分大小写
 
preg_match_all(正则表达式、匹配字符串、匹配到的东西放入数组) 返回匹配到的次数


返回结果是 int(4) 因为a再aaaa里被匹配了4次

preg_replace  (正则表达式、替换成什么、匹配字符串) 返回 替换 后的结果
 


返回结果string(12) "bbbbbbnnnnnn" ,匹配12次,替换6次
常用转义字符
数字: \d


返回结果int(9) ,只匹配数字
 
 
非数字: \D


返回结果int(4) ,除了数字全都匹配

 

 
空白字符(空格、制表符、换页符等): \s


返回结果int(3),匹配到tab和空格

 

 
非空白字符: \S


返回结果int(13),除了空白全匹配

 

 
单词字符( 26 个英文字母 + 数字 + 下划线 _ ): \w
 


返回结果int(14) ,26个英文字母+数字+下划线_,匹配到14次

 

 
非单词字符: \W


返回结果int(5) ,除了26个英文字母+数字+下划线_的全都匹配

自定义字符结合,区分大小写

字符集合[单个字符或字符区间],用于匹配集合内字符

   如:

[a-z]表示a-z26个小写字母



返回结果int(5) ,匹配到5次



返回结果int(0) ,匹配到0次

 

[0-9a-z]表示0-910个数字和a-z26个小写字母



返回结果int(13) ,匹配到13次

 

[135a-h]表示包含数字135和字母a-h8个字母

 

注意:两个不同字符段间请勿使用,隔开。



返回结果int(7) ,匹配到7次

非集[^单个字符或字符区间],用于匹配非集合内字符。(意思就是取反)

 

   如:

[^0-9]表示匹配所有非数字字符。



返回结果int(12) ,除了0-9这个区间里的以外匹配到12次

 

[^a-zA-Z]表示匹配所以非字母字符。



返回结果int(13) ,除了a-zA-Z这个区间以外匹配到13次

()      => 和数学一样很像,代表这是一个整体。



返回结果int(2) ,2,3分开匹配了,不是一个整体




返回结果int(1) ,23被当作一个整体去匹配了

 

^       =>   匹配输入字符串的开始位置



返回结果int(1) ,只匹配开头相同

 

$       => 匹配输入字符串的结尾位置



返回结果int(1) ,只匹配结尾相同

.        => 通配符[代表任意字符]



返回结果int(21) ,任意字符全匹配

 

 

*        => 匹配0次或者多次



返回结果int(2) ,匹配零次或者多次

+       => 匹配1次或者多次



返回结果int(1) ,匹配一次或者多次

\         => 转义字符



返回结果int(0) ,因为$在有代码意义所以匹配不到



返回结果int(1) ,转义之后让$只有字符串意义,所以可以匹配

 

 

|          =>   两项之间的一个选择

 



返回结果int(1) 



返回结果int(1) 


A可以匹配到B也可以匹配到

  限定符:

  {n}     => 例如:  0{8}     意思是指 只有连起来80才会被匹配   

 



返回结果int(1) 



返回结果int(0) 

对比一下,满足八个零才匹配到

 

  {n,}    =>例如: 0{2,}    意思是 只要有20及其以上的就会被匹配



返回结果int(1) 

  {n,m}   =>  例如: 0{2,4} 意思是最少匹配20,最多匹配40

 

  注:被匹配时,默认匹配最多的次数



返回结果int(2) ,匹配了2次4个零,默认匹配最多次数

 

  修饰符,写在标识符后面

 

   \i    => 不区分大小写



返回结果int(3) 

  \A    => 匹配规则必须从头开始匹配



返回结果int(1) 



返回结果int(0) 

  \s     => .将匹配一切字符



返回结果int(1) ,将匹配一切字符

 

  \x     => 正则表达式中的空白字符会被忽略



返回结果int(1) 

  \e     => 代码执行 仅限preg_replace()     => 可以写一句话但是不能连接菜刀

 

  file_put_contents 函数 [把字符串写入文件]

  file_put_contents(写入文件的地址,写入的文件的内容)

 

特别字符

说明

$

匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n' 或 ‘\r'。要匹配 $ 字符本身,请使用 \$。

( )

标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。

*

匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。

+

匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。

.

匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。

[ ]

标记一个中括号表达式的开始。要匹配 [,请使用 \[。

?

匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。

\

将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, ‘n' 匹配字符 ‘n'。'\n' 匹配换行符。序列 ‘\\' 匹配 “\”,而 ‘\(' 则匹配 “(”。

^

匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。

{ }

标记限定符表达式的开始。要匹配 {,请使用 \{。

|

指明两项之间的一个选择。要匹配 |,请使用 \|。

 

剖析一下靶场的

 

正则表达式——从学会匹配到稍微知道概念_第1张图片

 

你可能感兴趣的:(零基础到进阶黑客)