正则表达式
概念
正则表达式是用于描述字符排列和匹配模式的一种语法规则,它主要用于字符串的模式分割、匹配、查找及替换操作。
正则表达式与通配符
- 正则表达式用来在文件中匹配符合条件的字符串,正则是
包含匹配。grep\awk\sed等命令可以支持正则表达式。 - 通配符用来匹配符合条件的文件名,通配符是
完全匹配。ls\find\cp这些命令不支持正则表达式,所以只能使用shell自带的通配符进行匹配。
通配符:
* 匹配任意内容
? 匹配任意一个
[] 匹配括号里的一个
基础正则表达式
| 元字符 | 作用 |
|---|---|
| * | 符号前面的字符匹配0次或任意次 |
| . | 匹配除了换行外的任意 一个 字符 |
| ^ | 匹配行首,指以什么 开头。如,^hello指的是以hello开头的行。 |
| \$ | 匹配行尾,指以什么 结尾。如,hello\$指的是以hello结尾的行。 |
| [] | 匹配括号中的任意 MARKDOWN_HASH8b9a14d93c3e810a623e97a39a231353MARKDOWNHASH 字符如,[0-9]指匹配任意一个数字,[ A-Za-z0-9\ ]表示任意一个字母或数字或下划线 |
| [^] | 匹配除了中括号以外的任意一个字符 如,[^0-9]指的是一个非数字字符 |
| \ | 转义符,将特殊符号的含义取消 |
| \{n\} | 表示前面的字符出现了恰好n次如,[1][3-8][0-9]\{9\} 用于匹配手机号。以1开头,第二个字符是3-8,剩下九个字符都是任意数字 |
| \{n,\} | 表示前面的字符出现了 至少n次 |
| \{n,m\} | 表示前面的字符出现了 至少n次,最多m次 |
| \w | 代表单词字符,相当于[A-Za-z0-9_] |
| \d | 代表数字字符,相当于[0-9] |
- 类似
a*的正则表达式毫无意义,因为*指0或任意次,表示没有该字符也会匹配到,换言之,这条正则匹配会匹配到全部内容,所以不使用。如果想表达1次及以上,可以使用aa *^$指的是空白行



Comments NOTHING