正则网站:http://grok.qiexun.net/
一,基本语法
1,字符类
字符 | 含义 | 举例 |
---|---|---|
。 | 匹配任意一个字符 | ABC。可以匹配abcd,abc9等 |
[] | 匹配括号中的任意一个字符 | [abc] d可以匹配ad,bd或cd |
- | 用在[]中,表示字符范围 | [0-9a-fA-F]可以匹配一位十六进制数字 |
^ | 如果位于[]的开头,则匹配除去括号中字符之外的一切字符 | [^ xy]匹配除xy之外的任一字符,因此[^ xy] 1可以匹配a1,b1但不匹配x1,y1 |
[[:XXX:]] | grep工具预定义的一些命名字符类 | [[:alpha:]]匹配一个字母,[[:digit:]]匹配一个数字 |
2,数量限定符
字符 | 含义 | 举例 |
---|---|---|
? | 紧跟在它前面的单元匹配零次或一次 | [0-9]?/。[0-9]匹配0.0,2.3,.5等,由于。在正则表达式中是一个特殊字符,所以需要用/转义一下,取字面值 |
+ | 紧跟在它前面的单元匹配一次或多次 | [A-ZA-Z0-9。-_] + @ [A-ZA-Z0-9。-_] + / [A-ZA-Z0-9。-_]匹配的电子邮件 |
* | 紧跟在它前面的单元匹配零次或多次 | [0-9] [0-9] *匹配至少一位数字,等价于[0-9] +,[a-zA-Z _] + [a-zA-Z_0-9] *匹配C语言的标识符 |
{N} | 紧跟在它前面的单元应精确匹配N次 | [1-9] [0-9] {2}匹配从100到999的整数 |
{N,} | 紧跟在它前面的单元至少要匹配ñ次 | [1-9] [0-9] {2,}匹配三位以上(含三位)的整数 |
{,M} | 紧跟在它前面的单元至多匹配米次 | [0-9] {,1}和[0-9]?意义一样, |
{N,M} | 紧跟在它前面的单元至少匹配Ñ次,至多匹配米次 | [0-9] {1,3} / [0-9] {1,3} / [0-9] {1,3} / [0-9] {1,3} /。用于匹配IP地址 |
3,位置限定符
字符 | 含义 | 举例 |
---|---|---|
^ | 匹配行首的位置 | ^内容匹配以内容开头的行 |
$ | 匹配行末的位置 | :$匹配以:结尾的行,^ $匹配空行 |
/ < | 匹配单词开头的位置 | / <th匹配... this,但不匹配ethernet,第十 |
/> | 匹配单词结尾的位置 | 匹配飞跃...,但不匹配父母,困倦 |
/ b | 匹配单词开头或结尾的位置 | ap / b匹配飞跃,/ ble匹配飞跃,/ bat / b匹配... at,但不匹配cat,atexit,batch |
/ B | 匹配非单词开头和结尾的位置 | / Bat / B匹配电池,但不匹配...参加,戴帽子... |
4,其他特殊字符
字符 | 含义 | 举例 |
---|---|---|
/ | 转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符 | 普通字符<写成/ <表示单词开头的位置,特殊字符。写成/。以及/写成//就当作普通字符来匹配 |
() | 将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符 | ([0-9] {1,3} /。){3} [0-9] {1,3}匹配IP地址 |
| | 连接两个表达式,表示或的关系 | N [0-任]可以匹配没有或没有 |