字符?正则?bugku(正则表达式学习)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/destiny1507/article/details/82429521

题目

通过读代码可以看出只要我们构造出符合正则表达式的字符串通过GET传参传过去就可以看到 key 即 flag

通过这道题看了很多正则表达式的语法规则……

------------------------------------------------------------------------------------------------------------------------------------------分割线哇

首先分析这道题:

定界符:/和/(一般来说是这两个,其实除了\和字母数字其它的只要是成对出现都可以看做定界符,比如##、!!之类的);

. (一个点):表示可以匹配任何字符;

*   :前面的字符重复零次或多次;

{n,m} :前面的字符重复4~7次;

\ (反斜线):后面的字符被转义;

[a-z] :在a到z中匹配 ;

[[:punct:]] :匹配任何标点符号;

/i  :表示这个正则表达式对大小写不敏感;

至此,我们可以对这道题的正则表达式进行构造。

例如:keyakeyaaaakey:/a/aakeyb!

有很多只要符合都可以

----------------------------------------------------------------------------------------------------------------------------------我是分割线哇

正则表达式语法补充:

一、

 "\b" :不会消耗任何字符只匹配一个位置,常用于匹配单词边界 如 我想从字符串中"This is Regex"匹配单独的单词 "is" 正则就要写成 "\bis\b"  

    \b 不会匹配is 两边的字符,但它会识别is 两边是否为单词的边界 

 "\d": 匹配数字

 "\w":匹配字母,数字,下划线.

 "\s":匹配空格 

  ".":匹配除了换行符以外的任何字符

  "[abc]": 字符组  匹配包含括号内元素的字符 

另:

   "\W"   匹配任意不是字母,数字,下划线 的字符

   "\S"   匹配任意不是空白符的字符

 "\D"  匹配任意非数字的字符

   "\B"  匹配不是单词开头或结束的位置

   "[^abc]"  匹配除了abc以外的任意字符

二、(来自https://www.cnblogs.com/afarmer/archive/2011/08/29/2158860.html

* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,”do(es)?” 可以匹配 “do” 或 “does” 中的”do” 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,’o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’ 则等价于 ‘o*’。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,”o{1,3}” 将匹配 “fooooood” 中的前三个 o。’o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。

这些都是很基础的元素,还有很多搭配使用,详见  ---->  Orz

猜你喜欢

转载自blog.csdn.net/destiny1507/article/details/82429521