Leafee98's Blog

正则表达式随笔

· 675 words · 2 minutes to read
Categories: tech
Tags: regular-expression

POSIX基础正则表达式 🔗

纯文本 🔗

以文本形式直接写出需要匹配的内容

abc ===> abc

特殊字符 🔗

.*[*^${}+?\|()

锚字符 🔗

  • 行首 ^
  • 行尾 $

^$ ===> 匹配空行

点号字符 🔗

匹配换行字符之外的任意单个字符, 必须匹配一个字符

a.c ===> abc, a c

字符组 🔗

使用方括号定义一个字符组, 方括号中包含素有希望出现在该字符组中的字符

a[bcd]b ===> abb, acb, adb

排除型字符组 🔗

在普通字符组的起始字符写出一个脱字符^, 即可匹配字符组之外的所有字符, 换行符除外

a[^bcd]b ===> aab

区间 🔗

在字符组中单破折号可在字符组中用作区间

a[b-f]b = a[bcdef]b ===> abb, acb, adb, aeb, afb

特殊字符组 🔗

描述
[[:alpha:]]匹配任意字母字符, 不管大写还是小写
[[:alnum:]]匹配任意字母数字字符0-9, a-z, A-Z
[[:blank:]]匹配空格或制表符
[[:digit:]]匹配0-9之间的数字
[[:lower:]]匹配小写字符a-z
[[:print:]]匹配任意可打印字符
[[:punct:]]匹配标点符号
[[:space:]]匹配任意空白字符: 空格, 制表符, NL, FF, VT和CR
[[:upper:]]匹配任意大写字母字符A-Z

a[[:alnum:]]c ===> abc, a1c, a8c

星号 🔗

在字符后面放置星号表明该字符必须在匹配模式的文本中出现0次或多次

a[bc]\*c ===> abc, acc, ac, abcc, abbbbbc

POSIX拓展正则表达式 🔗

问号 🔗

在字符后面放置星号表明该字符必须在匹配模式的文本中出现0次或1次

ab?c ===> ac, abc

加号 🔗

在字符后面放置加号表明该字符必须在匹配模式的文本中出现1次或多次

ab+c ===> abc, abbc, abbbc

花括号 🔗

花括号标识允许为可重复的正则表达式指定一个上下限, 通常称为间隔

  • m : 正则表达式准确出现m次
  • m,n : 正则表达式出现至少m次, 至多n次

ab{2}c ===> abbc

ab{1,2}c ===>abc, abbc

竖线 🔗

表示在检查数据流时, 使用逻辑或的方式指定两个或多个匹配模式

a(b|c)c ===> abc, acc

abc|abb ===> abc, abb

圆括号 🔗

圆括号用于对正则表达式模式进行分组, 分组时, 该组会被视为一个标准字符, 可以向对普通字符一样给该组用特殊字符来限制匹配

Sat(urday)? ===> Sat, Saturday