与正则表达式相关的概念
正则表达式Regular Exception应用范围
- 字符串匹配操作和替换操作
- 举例:linux中的vi more grep yacc lex awk sed 等命令使用
- 其他: Visual studio,word等文本编辑器
正则表达式的功能
- 描述一个字符串的模式
注意:
- 正则表达式规则和文件通配符规则不同,正则表达式用于文本处理,文件名匹配规则用于文件处理
- 不同软件对正则表达式的理解有差异
元字符
- 六个元字符: . * [ \ ^ $
- 其它字符与自身匹配
- 转义:用反斜线可以取消特殊含义字符的特殊意义,如:正则表达式 hello\. 只与字符串 hello. 匹配
单字符正则表达式
- 长的正则表达式由单字符正则表达式构成
- 非特殊字符与其自身匹配
- 转义字符(\) 转义字符之后只能加六个元字符,表示元字符本身符号没有特殊含义,不可以有其它的字符
- 定义集合:在一对方括号之间的字符为集合的内容,如[abcd] 表示与 a,b,c,d 匹配
圆点,星号,反斜线在方括号内时,表示它们自己。- 用减号 - 定义一个区间:减号在中间否则表示自身,如[a-d],[A-Z],[a-zA-Z0-9]
- 用 ^ 表示补集:^号在开头否则表示自身,如:[^a-z]匹配任意非小写字母
单字符正则表达式的组合
- 串结:abc,[A-Z].[0-9] 用点来串结
- 星号(*):单字符正则表达式 后跟*,匹配此单字符正则表达式0次或任意多次出现,例如56*7,与5667,57匹配,与5687不匹配
- 锚点:$在尾部时有特殊含义,否则与自身匹配,如:123$ 匹配文件中行尾的123,不在行尾的123字符不匹配
^在首部时有特殊含义,否则与自身匹配,如:^123 匹配文件中行首的123,不在行首的123字符不匹配
正则表达式的扩展:(扩展自行学习)[与基本正则表达式不兼容]
- ERE:扩展的正则表达式
- PCRE:Perl-compatible regular expression 与perl语言兼容的正则表达式
对基本正则表达式(BRE)进行改进:
- 表示分组:圆括号() (xy)* 可匹配空字符串,xy,xyxy,xyxyxy
- 表示逻辑运算:(a|b) 与a或者b匹配
- 重复次数定义:与星号地位类似的+和?,限定重复次数\{m,n\}
-- *号表示它左边的单字符正则表达式的0次或多次重复
-- +号表示1次或多次出现
-- ?表示0次或一次出现
-- 限定重复次数例如:[1-9][0-9]\{6,8\} 表示7-9位数字首位非0
- 命名预定义集合
-- [[:xdigit:]] 十六进制数字
-- \d 数字
-- \D 非数字
- 比^和$更加灵活的锚点