正则表达式
正则表达式由字面文本和具有特殊意义的符号组成,这里记录的是扩展正则表达式
位置标记
位置标记锚点(position marker anchor)是标识字符串位置的正则表达式。默认情况下,正则表达式所匹配的字符串可以出现在任意位置。
正则表达式 | 描述 | 示例 |
---|---|---|
^ | 指定了匹配正则表达式的文本必须起始于字符串的首部 | ^tux能够匹配以tux起始的行 |
$ | 指定了匹配正则表达式的文本必须结束于目标字符串的尾部 | tux$能够匹配以tux结尾的行 |
标识符
标识符是正则表达式的基础组成部分。其定义了正则表达式中必须出现的字符。
正则表达式 | 描述 | 示例 |
---|---|---|
. | 匹配任意一个字符 | Hack.能够匹配Hackl和Hacki,但是不能够匹配Hacklt,因为其只能匹配一个字符 |
[] | 匹配中括号内部的任意一个字符。中括号内可以是一个字符组或字符范围 | coo[kl]能够匹配cook和cool,[0-9]能够匹配单个数字 |
[^] | 匹配不在中括号内的任意一个字符。中括号内可以是一个字符组或字符范围 | 9[01]能够匹配92和93,但是不能够匹配91和90;A[0-9]匹配A以及随后除数字以外的任意单个字符 |
数量修饰符
一个标识符可以出现一次、多次或者不出现。数量修饰词定义了模式可以出现的次数
正则表达式 | 描述 | 示例 |
---|---|---|
? | 匹配之前的项1次或者0次 | colou?r能够匹配colour和color |
+ | 匹配之前的项1次至无数次 | Rollno-9+能够匹配Rollno-9和Rollno-99,但是不能匹配Rollono- |
* | 匹配之前的项0次至无数次 | co*l能够匹配cl, col, cool |
{n} | 匹配之前的项n次 | [0-9]{3}能够匹配任意的三位数 |
{n,} | 之前的项至少匹配n次 | [0-9]{2,}能够匹配一个两位或者更多位的数字 |
{n,m} | 之前的项匹配 | [0-9]{2,5}能够匹配两位数到五位数之间的任意一个数字 |
其他
还有一些特殊字符能够调整正则表达式的匹配方式
正则表达式 | 描述 | 示例 |
---|---|---|
() | 将括号中的内容作为一个整体 | ma(tri)?x能够匹配max和matrix |
() | 能够将括号中的内容保存在寄存器1~9当中,之后能够使用\1, \2去引用 | (.+)\1能够匹配aa,abab,abcabc |
\ | 转义字符可以转义之前使用到的特殊字符 | a\.b能够匹配a.b,但是不会匹配ajb。其忽略了.的特殊含义 |
| | 指定了一个选择结构,可以匹配|两边的任意一项 | Oct (1st|2nd)能够匹配Oct 1st或者Oct 2nd |
资料
https://deerchao.cn/tutorials/regex/regex.htm#greedyandlazy