# regular expression
- 查找的字符串并没有完整的信息,希望匹配指定模式的一部分。
- 模式匹配
# 1 描述模式
- 连接操作: AB
- 或操作: {A|B}
- 闭包操作: AB* 0或多个B
- 括号 : 改变默认的优先级顺序
# 2 缩略写法
- 1字符集的描述
名称 | 记法 | 举例 |
---|---|---|
通配符 | . | A.B |
指定的集合 | 包含在[]中 | [ABCD]* |
范围的集合 | 包含在[]中, 由"-"分隔 | [A-Z] |
补集 | 包含在[]中, 首字母为^ | [^ABC] |
- 闭包的简写
选项 | 记法 | 举例 | 语言中的字符串 | 不在语言中的字符串 |
---|---|---|---|---|
至少重复1次 | + | (AB)+ | AB | BBB |
重复0到1次 | ? | (AB)? | 空集 AB | 所有其他字符串 |
重复指定次数 | {} | (AB){3} | ABABAB | 所有其他字符串 |
重复指定范围的次数 | {} | (AB){1-2} | AB ABAB | 所有其他字符串 |
- 3 转义序列: "", ".", "|", "*", "(", ")", S是元字符 ;要加上,
例子 | 意思 |
---|---|
// | / |
# 3 实际应用
- 子字符串查找
- 合法性检查
应用场景 | 正则表达式 | 匹配 |
---|---|---|
子字符串查找 | .NEEDLE. | A NEEDLE IN |
电话号码 | ([0-9]{3})[0-9]{3}-[0-9]{4} | (800) 233-1234 |
电子邮件 | [a-z]+@([a-z]+.)+(edu|com) | rs@cs.princeton.edu |
基因组 | gcg(cgg|agg)*ctg | gcgcggaggctg |