# 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