regex 基本

  • * 和 + :

    • * 表示 0 个或多个 "a*"
    • + 表示 1 个或多个 "a+"
  • []

    • 选择项目
    • [1, 2, 3] 三个数字里任意一个
    • [abc] 三个字母里任意一个
    • [0-9] 0~9 里任意一个
  • ()

    • 分组
    • (abc) 存在 abc 连在一起的组
    • (abc)+ 存在 一个或多个 abc 连在一起的组
  • {}

    • 出现次数
    • (abc){3} abc 连续出现3次
    • (abc){3,} abc 连续出现3次或以上
  • .

    • 任意字符
    • a.*b ab之间可以包含任意数字的任意字符
  • |

    • (ab|bc) ab 或 bc
  • ?

  • \

  • ^

    • ^ 字符串开始
    • [^0-9] 表示否定, not 0-9
  • $

    • $ 字符串结束
  • \d

    • 表示数字
    • \d{4} 出现4个数字

向前、向后 lookahead lookbehind

\d(?=abc)

  • 筛选出 后面跟着 abc 的数字 (?<=abc)\d
  • 筛选出 前面跟着 abc 的数字

grep 不支持 lookaround, 建议是 lookaround 之后再 tr 删除字符吧