把握一个原则,轻松搞定可恶的正则符号
1.找什么
- 数字[0-9]
- 字母[a-zA-Z]
- 标点符号[[:punct:]]
2.怎么找
-
以什么为首 ^key
-
以什么结尾 key$
-
包含什么或不包含什么 [abc] ^[abc]
3.找多少
- 找前导字符出现0次或连续多次*
- 找任意单个(一次)字符 .
- 找任意字符 .*
- 找前导字符连续出现几次 {n} {n,m} {n,}
- 找前导字符出现1次或多次 +
- 找前到字符出现0次或1次 ?
元字符 | 功能 | 示例 |
---|---|---|
* | 前导字符出现0次或者连续多次 | ab* abbbb |
. | 除了换行符以外,任意单个字符 | ab. ab8 abu |
.* | 任意长度的字符 | ab.* adfdfdf |
[] | 括号里的任意单个字符或一组单个字符 | abc[a-z] |
[^] | 不匹配括号里的任意单个字符或一组单个字符 | [^abc] |
[3] | 匹配以括号里的任意单个字符开头 | [4] |
^[^] | 不匹配以括号里的任意单个字符开头 | |
^ | 行的开头 | ^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 | 匹配字母数字下划线 | grep -P \w+ |