正则表达式
概念
正则表达式是用于描述字符排列和匹配模式的一种语法规则,它主要用于字符串的模式分割、匹配
、查找及替换操作。
正则表达式与通配符
- 正则表达式用来在文件中匹配符合条件的字符串,正则是
包含匹配
。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