概念
- 正则表达式是描述一组字符串特征的模式,用来匹配特定的字符串。
- 元字符是在正则表达式中有特殊含义的字符,也是保留字符,是不参与匹配的。
支持的语言及工具
几乎所有的编程语言以及编辑器都支持正则表达式,但是有可能支持的力度、方式不太一样,像perl/java/js等。
类unix系统下的工具比较多用的也比较频繁,像grep/awk/sed等。
特点
- 同一个匹配结果可以通过不同的正则表达式实现
- 同一个正则表达式有可能匹配多个结果
- 大小写敏感
单字符匹配
- 普通元字符
元字符 | 含义 | 举例 | 说明 |
---|---|---|---|
[] | 字符组或者字符集 | [0123],表示只会配置中括号中出现的字符 | |
- | 连字符表示范围 | [0-9],表示要配置0到9的数字 | 只在中括号中表示连字符 |
^ | 取非 | [^0-9] 表示除了0到9的数字都匹配 | 对整个字符集生效 |
. | 通配符,匹配任意单个字符 | 有些情况下不能匹配行起始符 | |
\ | 转义其他元字符 | \. 表示.这个字符本身 | 需要放在其他元字符之前使用,表示后面跟的字符表示一个普通字符。 |
- 下面一些与\搭配的字母或者数字,一起可以称为元字符,也可以称为字符简写形式
元字符 | 含义 | 说明 |
---|---|---|
\a | 报警符 | |
[\b] | 退格字符(回退并删除) | 需要放在中括号中 |
\c x | 控制字符 | |
\d | 数字字符 | 同 [0-9]的功能 |
\D | 非数字字符 | 同 [^0-9] |
\o xxx | 八进制值 | |
\w | 单词字符 | 同[a-zA-Z0-9_] |
\W | 非单词字符 | 同[^a-zA-Z0-9_] |
\0 | 空字符 | |
\x xx | 十六进制值 | |
\u xxx | Unicode值 | |
\n | 换行符 | |
\r | 回车符 | |
\s | 空白字符 | 同[\f\n\r\t\v] |
\S | 非空白字符 | 同[^\f\n\r\t\v] |
\t | 水平制表符 | 即Tab键 |
\v | 垂直制表符 | |
\V | 非垂直制表符 | |
\f | 换页符 | |
\h | 水平空白符 | |
\H | 非水平空白符 |
- POSIX字符类
说明:并不是所有的语言或者工具都支持POSIX字符类
在类unix环境的bash脚本中使用,还是比较一目了然
使用时必须以[[开头,]]结尾,如[[:alpha:]]
字符类 | 含义 | 说明 |
---|---|---|
[:alnum:] | 任何一个字母或者数字 | 同[a-zA-Z0-9] |
[:alpha:] | 任何一个字母 | 同[a-zA-Z] |
[:lower:] | 任何一个小写字母 | 同 [a-z] |
[:upper:] | 任何一个大写字母 | 同 [A-Z] |
[:blank:] | 空格或者制表符 | 同[ \t] |
[:space:] | 任何一个空白字符,包括空格 | 同[ \t\f\n\r\v] |
[:cntrl:] | ASCII控制字符 | ASCII 0到31,再加上127 |
[:digit:] | 任何一个数字 | 同[0-9]或者\d |
[:xdigit:] | 任何一个十六进制数字 | 同[a-fA-F0-9] |
[:graph:] | 不包含空格的可打印字符 | 同[:print:] |
[:print:] | 可打印字符 |
多字符匹配
将元字符放在需要匹配的字符后面,表示此字符重复匹配多少次
元字符 | 含义 | 说明 |
---|---|---|
+ | 匹配一个或者多个 | |
* | 匹配0个或者多个 | |
? | 匹配0个或者1个 | |
{m} | 精确匹配m个 | |
{m,n} | 至少匹配m个,至多匹配n个 | 其中m,n可以只配置一个值 |
网友评论