正则表达式

基本概念

Posted by Deetch on October 21, 2016
  • 正则基础

** 元字符

** “[]” 字符组

** “^”

'zfd[^abc]' : 不包含abc

'^asd[abc]' : 以a字符开头的行

** “$”

'abcd$' : 以d字符结尾的行

** “.”
匹配任一字符

** “-“

[a-z] : a-z的任一字符

** “|”

a|b : a或者b字符
gre(a|b)asd : 

** “?”

colou?r : 非必须出现u字符,0 or 1

** “*”

colou*r : 0 or more

** “+”

colou+r : 1 or more

** “{n,m}”

a{1,3} : 1 <= times <= 3

** “\b”
在字符组中,匹配一个退格符,否则通常作为单词分界符

** “\t”
制表符号,

** “\n”
换行符号

** “\r”
回车符

** “\s”
匹配所有”空白”(空格符,制表符,换行符和回车符)

** “\S”
除\s之外的任何字符

** “\w”
[a-zA-Z0-9]

** “\W”
[^a-zA-Z0-9]

** “\d”
[0-9]

** “\D”
[^0-9]

** “(?:)” 只分组,不匹配

** “环视(lookahead)”
环视不会占用字符,只会找到匹配的位置

肯定顺序环视(?=...):子表达式能匹配右侧文本
否定顺序环视(?!...):子表达式不能匹配右侧文本
肯定逆序环视(?<=...):子表达式能匹配左侧文本
否定逆序环视(?<!...):子表达式不能匹配左侧文本
  • perl ~~~ perl -p -i -e ‘s/sysread/read/g’ file

-e: 整个程序接在命令的后面 -p: 对目标文件的每一行进行查找和替换 -i: 将替换的结果写回到文件 -w: 开启警告 ~~~

** “/i” 忽略大小写

** “m” 匹配

** “s” 替换

** “/g” 全局

  • egrep

“-i” 忽略大小写

  • 正则表达式原理
    DFA:
    NFA: