• 正则表达式 学习笔记


    1、^

      字符串的起始位置

    2、$

      字符串的结束位置

    3、

      匹配单词的边界,但是不消耗任何一个字符串的位置,只是用来判断而已,比如:

      

    4、d

      数字

    5、D

      任意非数字

    6、w

      数字、字母、下划线

    7、W

      任意非数字、字母、下划线

    8、s

      空格

    9、S

      任意非空格

    10、.

      匹配除换行符以外的任意字符

    11、[abc]

      字符组,匹配括号里面存在的字符

    12、*

      重复0次或多次

    13、+

      重复一次或多次

    14、?

      重复0次或1次

    15、{n}

      重复n次

    16、{n, m}

      重复n-m次

    17、{n, }

      重复n到更多次

    18、懒惰限定符

    (1) *?

      重复任意次,但尽可能少重复 。如: "acbacb"  正则  "a.*?b" 只会取到第一个"acb" 原本可以全部取到但加了限定符后,只会匹配尽可能少的字符 ,而"acbacb"最少字符的结果就是"acb" 

    (2) +?

      重复1次或更多次,但尽可能的少重复。

    (3) ??

      重复0次或1次,但尽可能少重复.如: "aaacb" 正则 "a.??b" 只会取到最后的三个字符"acb"

    (4) {n,m}?

      重复n到m次,但尽可能少重复.如:"aaaaaaaa"  正则 "a{0,m}" 因为最少是0次所以取到结果为空

    (5) {n,}?

      重复n次以上,但尽可能少重复.如:"aaaaaaa"  正则 "a{1,}" 最少是1次所以取到结果为 "a"

    19、捕获分组

    (1)分组 ()

      用()进行分组,对于分组来说,表达式永远是算作第一组,可以使用1来向后引用,简化表达式,三十这里要注意,不能(1),因为这样的话引用的是文本内容,而不是正则表达式,也就是说,当一个组中的内容匹配成功之后,向后引用,引用的就是匹配成功之后的内容,而不是表达式

    (2)不捕获 ?:

      不捕获就是在分组的前面加上 ?: ,可以在不需要捕获分组的表达式中试用,加快表达式的执行速度。

    (3)断言 (?<=)

      断言就是只某个字符串的前面或后面,将会出现满足某种规律的字符串,匹配的内容不包括断言的内容

      断言分为两种方式:

      《1》正后发断言    (?<=匹配的字符串)

      《2》正先行断言    (?=匹配的字符串)

      !表示正好相反的意思,就是把=换成了!,看表格解释,X代表字符

    (?=X )

    零宽度正先行断言。仅当子表达式 X 在 此位置的右侧匹配时才继续匹配。例如,w+(?=d) 与后跟数字的单词匹配,而不与该数字匹配。此构造不会回溯。
    "How are you doing" 正则"(?<txt>.+(?=ing))" 这里取ing前所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为"How are you do";

    (?!X)

    零宽度负先行断言。仅当子表达式 X 不在 此位置的右侧匹配时才继续匹配。例如,例如,w+(?!d) 与后不跟数字的单词匹配,而不与该数字匹配 。
    "123abc" 正则 "d{3}(?!d)"匹配3位数字后非数字的结果

    (?<=X)

    零宽度正后发断言。仅当子表达式 X 在 此位置的左侧匹配时才继续匹配。例如,(?<=19)99 与跟在 19 后面的 99 的实例匹配。此构造不会回溯。

    "How are you doing" 正则"(?<txt>(?<=How).+)" 这里取"How"之后所有的字符,并定义了一个捕获分组名字为 "txt" 而"txt"这个组里的值为" are you doing";

    (?<!X)

    零宽度负后发断言。仅当子表达式 X 不在此位置的左侧匹配时才继续匹配。例如,(?<!19)99 与不跟在 19 后面的 99 的实例匹配

    "abc123 " 正则 "(?<![0-9])123" 匹配"123"前面是非数字的结果也可写成"(?!<d)123"

    (4)捕获分组

      (exp)匹配exp,并捕获文本到自动命名的组里

      (?:exp)匹配exp,不捕获匹配的文本,也不给此分组分配组号

      (?<name>exp)匹配exp,并捕获文本到名称为name的组里

     

  • 相关阅读:
    Client-Side Attacks
    Web Penetration Testing w3af fierce
    解决kali linux 升级后安装w3af 问题
    Metasploit (二)
    Metasploit
    Dig skipfish proxystrike
    Web Penetration Testing
    Wireless Penetration Testing(命令总结)
    LabView(控件部分)
    Wireless Penetration Testing(7-11 chapter)
  • 原文地址:https://www.cnblogs.com/qzccl/p/6531690.html
Copyright © 2020-2023  润新知