正则表达式
正则表达式是一个描述字符排列或模式匹配的规则,我们可以利用它来制定自己的规则,获取到我们想要的结果
分类
基本正则表达式:Basic Regular Expression 又叫 Basic RegEx 简称 BREs,在基本正则表达式中作用的元字符为:
^
、$
、.
、[
、]
、*
扩展正则表达式:Extended Regular Expression 又叫 Extended RegEx 简称 EREs,其为在基本正则表达式上新增了
(
、)
、{
、}
、?
、+
、等元字符元字符,使得正则表达式更加简洁易用。
原字符
通用 POSIX 原字符
[:alnum:]
字母数字[a-z A-Z 0-9]
[:alpha:]
字母[a-z A-Z]
[:blank:]
空格或制表键[:cntrl:]
任何控制字符[:digit:]
数字[0-9]
[:graph:]
任何可视字符(无空格)[:lower:]
小写[a-z]
[:print:]
非控制字符[:punct:]
标点字符[:space:]
空格[:upper:]
大写[A-Z]
[:xdigit:]
十六进制数字[0-9 a-f A-F]
特殊字符,在扩展正则表达式中加上
\
则被认为其具有特殊含义:\w
匹配任意数字和字母,等效[a-zA-Z0-9_]
\W
和\w
相反,等效[^a-zA-Z0-9_]
\b
匹配字符串开始或结束,等效\<
和\>
\s
匹配任意的空白字符\S
匹配非空白字符
匹配
字符匹配
.
匹配任意单个字符[]
匹配中括号范围内的任意单个字符^
对匹配的字符取反|
匹配提供的两个字符
数量匹配
*
匹配前面字符 任意次,可以0个、1个、也可以无数个?
匹配前面字符 0次或者1次+
匹配前面字符 至少1次{m,n}
匹配前面字符 最少m次,最多n次.*
匹配任意字符任意次数
位置锚定
^
行首锚定,放置在模式最左边$
行尾锚定,放置在模式最右边\<
、\b
词首锚定,匹配单词词首\>
、\b
词尾锚定,匹配单次词尾
分组引用
()
将括号内的匹配存入内存,之后可以通过\1
\2
引用
贪婪模式
通过在 *
、+
或 ?
限定符之后放置 ?
,该表达式从"贪婪"表达式转换为"非贪婪"表达式或者最小匹配。