基本正则表达式元字符:
- 字符匹配:
. 匹配除换行符以外的任意字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符 [:space:]
\d 匹配数字 [:digit:]
匹配字母 [:alpha:]
匹配小写字母 [:lower:]
匹配大写字母 [:upper:]
匹配数字或字母 [:alnum:]
匹配标点符号 [:punct:] - 匹配次数:用在要指定其出现的次数的字符的后面,用于限制其前面字符出现的次数:
* 匹配其前面字符任意次:0,1,n ...
.* 匹配任意长度的任意字符
\? 匹配其前面字符0次或1次,即前面字符可有可无
\+ 匹配其前面字符1次或多次,即前面字符至少出现1次
\{m\} 匹配其前面字符m次
\{m,n\} 匹配其前面字符至少m次,至多n次
\{m,\} 至少m次
\{0,n\} 至多n次
- 位置锚定
^ 匹配字符串的开始 行首锚定 用于模式的最左侧
$ 匹配字符串的结束 行尾锚定 用于模式的最右侧\b 匹配单词的开始或结束
^PATTERN$ 匹配整行
^$ 空白行
^[:space:]*$ 空白行或包含空白字符的行
单词:非特殊字符组成的连续字符(字符串)都称为单词
\<或\b 词首锚定,用于单词模式的左侧
\>或\b 词尾锚定,用于单词模式的右侧
\<PATTERN\> 匹配整个单词
- 分组及引用
\(\) 将多个字符捆绑在一起当作一个整体进行处理
\(xy\)*ab
分组括号中的模式匹配到的内容会被正则表达式引擎自动记录于内部的变量中,这些变量为:
\1 模式从左侧起,第一个左括号 以及 与之匹配的右括号之间 的模式 所匹配到的字符
\2 模式从左侧起,第二个左括号 以及 与之匹配的右括号之间 的模式 所匹配到的字符
\3
后向引用:引用前面的分组括号中的模式所匹配到的字符