正则匹配 + re

 

可能会遇到的正则匹配字符

^            匹配一行字符串的开头
.             匹配任意字符,除了换行符
[...]         匹配括号中的任一个,[amk] 匹配 'a','m'或'k'
[^...]       不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符
*             匹配0个或多个的表达式
+            匹配1个或多个的表达式
          匹配0个或1个由前面的正则表达式定义的片段,非贪婪方式

[ \f\r\t\n] //匹配所有的白字符
[^a-z] //除了小写字母以外的所有字符 
[0-9\.\-] //匹配所有的数字,句号和减号 
[[:alpha:]] 任何字母
[[:digit:]] 任何数字
[[:alnum:]] 任何字母和数字
[[:space:]] 任何空白字符
[[:upper:]] 任何大写字母
[[:lower:]] 任何小写字母
[[:punct:]] 任何标点符号
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]

|              a| b,匹配a或b
{n}          精确匹配 n 个前面表达式。例如, o{2} 不能匹配 "Bob" 中的 "o",但是能匹配 "food" 中的两个 o。
{n,}         匹配 n 个前面表达式。例如, o{2,} 不能匹配"Bob"中的"o",但能匹配 "foooood"中的所有 o。"o{1,}" 等价于 "o+"。"o{0,}" 则等价于 "o*"。
{ n, m}     匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式

\w         匹配字母数字下划线
\W         匹配非字母数字下划线
 \s         匹配任意空白字符
\S         匹配任意非空白字符
\d         匹配任意数字,等价于 [0-9]
\D         匹配任意非数字

首先分享一道例题:

bugku-----字符?正则

正则匹配 + re_第1张图片

划线部分是重点哦,

preg_match("/key.*key.{4,7}key:\/.\/(.*key)[a-z][[:punct:]]/i", trim($_GET["id"]), $match);

这句话不太难,我们可以一个一个比较的得到flag。因为通过得到的php代码来看,这个id就是flag。。。。

'/key' 就是key 的意思,'.*'即匹配任意一个字符,‘key’还是key,‘.{4,7}'就是需要任意字符但是字符的个数要比4大同时比7小,'key’仍然是key,‘:'本意不改,还是冒号,'\/'是反斜杠的意思即‘/’,  '.\/'还是一个任意字符都OK再加上一个反斜杠/,'(.*key)’还是key,[a-z]是从a到z之间任意一个小写字母,[:punct:]是任何标点符号。

 

下面记录一些re库

re.match :尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match() 就返回none。
re.search:扫描整个字符串并返回第一个成功的匹配。

在前面两个表达式中有区别,但是得到的答案的代表相同,,,
           span():获取开始和结束位置;string:获取匹配的内容
           group():获取子表达式匹配的内容


re.findall:在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
re.sub(‘表达式’, ‘新字符’, ‘字符串’):用于替换字符串中的匹配项。
re.split:方法按照能够匹配的子串将字符串分割后返回列表,用于通过匹配的子串将字符串分割,并将分割后的子串以列表形式返回,通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串 ,除去字符串中符表达式的字符,以列表的形式返回


re.compile:函数用于编译正则表达式,生成一个正则表达式对象

首先运行match后

正则匹配 + re_第2张图片

\d是数字,所以对于匹配的字符串,没有结果,返回是none,

import re
s='dkskfl23932'
result=re.match(r'\d',s)
print(result)
#print(result.span())
#print(result.group())

正则匹配 + re_第3张图片

 

string: 待匹配字符串,比较模糊的一个匹配。。

正则匹配 + re_第4张图片

findall的例子:

正则匹配 + re_第5张图片

 

正则匹配 + re_第6张图片

 

你可能感兴趣的:(新知识)