一、正则表达式简介
正则表达式,也成为正规表示法、常规表示法,是一种字符模式,用于在查找过程中匹配指定的字符。
许多程序设计语言都支持利用正则表达式进行字符串操作。
二、正则表达式可以做什么?
1)匹配邮箱、身份证号、手机号、银行卡号等;
2)匹配某些特定字符,做特定处理等;
三、第一类正则表达式
3.1 正则中普通常用的元字符
元字符 |
功能 |
备注 |
. |
匹配除了换行符以外的任意单个字符 |
|
* |
前导字符出现0次或连续多次 |
|
.* |
任意长度字符 |
ab.* |
^ |
行首(以...开头) |
^root |
$ |
行尾(以...结尾) |
bash$ |
^$ |
空行 |
|
[] |
匹配括号里任意单个字符或一组单个字符 |
[abc] |
[^] |
匹配不包含括号里任一单个字符或一组单个字符 |
[^abc] |
|
匹配以括号里任意单个字符或一组单个字符开头 |
|
^[^] |
匹配不以括号里任意单个字符或一组单个字符开头 |
^[^abc] |
3.2 正则中其他常用元字符
元字符 |
功能 |
备注 |
< |
取单词的头 |
|
> |
取单词的尾 |
|
< > |
精确匹配 |
|
{n} |
匹配前导字符连续出现n次 |
|
{n,} |
匹配前导字符至少出现n次 |
|
{n,m} |
匹配前导字符出现n次与m次之间 |
|
( ) |
保存被匹配的字符 |
|
d |
匹配数字(grep -P) |
[0-9] |
w |
匹配字母数字下划线(grep -P) |
[a-zA-Z0-9_] |
s |
匹配空格、制表符、换页符(grep -P) |
[
] |
3.3 扩展正则常用元字符
扩展元字符 |
功能 |
备注 |
+ |
匹配一个或多个前导字符 |
bo+ 匹配boo、 bo |
? |
匹配零个或一个前导字符 |
bo? 匹配b、 bo |
| |
或 |
匹配a或b |
() |
组字符(看成整体) |
(my|your)self:表示匹配myself或匹配yourself |
{n} |
前导字符重复n次 |
|
{n,} |
前导字符重复至少n次 |
|
{n,m} |
前导字符重复n到m次 |
|
3.4 第二类正则
表达式 |
功能 |
示例 |
[:alnum:] |
字母与数字字符 |
[[:alnum:]]+ |
[:alpha:] |
字母字符(包括大小写字母) |
[[:alpha:]]{4} |
[:blank:] |
空格与制表符 |
[[:blank:]]* |
[:digit:] |
数字 |
[[:digit:]]? |
[:lower:] |
小写字母 |
[[:lower:]]{4,} |
[:upper:] |
大写字母 |
[[:upper:]]+ |
[:punct:] |
标点符号 |
[[:punct:]] |
[:space:] |
包括换行符,回车等在内的所有空白 |
[[:space:]]+ |
3.5 正则元字符一览表
元字符 |
功能 |
示例 |
* |
前导字符出现0次或者连续多次 |
ab* abbbb |
. |
除了换行符以外,任意单个字符 |
ab. ab8 abu |
.* |
任意长度的字符 |
ab.* adfdfdf |
[] |
括号里的任意单个字符或一组单个字符 |
[abc][0-9][a-z] |
[^] |
不匹配括号里的任意单个字符或一组单个字符 |
[^abc] |
|
匹配以括号里的任意单个字符开头 |
|
^[^] |
不匹配以括号里的任意单个字符开头 |
|
^ |
行的开头 |
^root |
$ |
行的结尾 |
bash$ |
^$ |
空行 |
|
{n}和{n} |
前导字符连续出现n次 |
[0-9]{3} |
{n,}和{n,} |
前导字符至少出现n次 |
[a-z]{4,} |
{n,m}和{n,m} |
前导字符连续出现n-m次 |
go{2,4} |
<> |
精确匹配单词 |
<hello> |
() |
保留匹配到的字符 |
(hello) |
+ |
前导字符出现1次或者多次 |
[0-9]+ |
? |
前导字符出现0次或者1次 |
go? |
| |
或 |
^root|^ftp |
() |
组字符 |
(hello|world)123 |
d |
perl内置正则 |
grep -P d+ |
w |
匹配字母数字下划线 |
|