一.概念
语法模式类似perl.表达式必须用分隔符闭合,比如一个正斜杠(/).
分隔符可以是任意非字母非数字,除反斜杠()和空字节之外的非空白ascii字符
如果分隔符 在表达式中使用,需要使用反斜线进行转义。
二.组成
元字符
一个正则表达式基本组成
/原子和元字符/模式修正符 /代表定界符的一个
正则表达式的威力在于其能够在模式中包含选择和循环。它们通过使用元字符来编码在模式中,元字符不代表其自身,它们用一些特殊的方式来解析。
根据在方括号的内部还是外部分为两种。
1.方括号之外的元字符
元字符(符号) | 说明 |
一般用于转义字符 | |
^ | 断言目标的开始位置(或在多行模式下是行首) |
$ | 目标的结束位置(活在多行模式下行尾) |
. | 匹配除换行符外任何字符(默认时) |
[,] | 开始,结束字符类定义 |
| | 开始一个可选分支 |
( ,) | 子组的开始,结尾标记 |
? | 作为量词,表示 0 次或 1 次匹配。位于量词后面用于改变量词的贪婪特性 |
* | 量词,0 次或多次匹配
|
+ | 量词,1 次或多次匹配
|
{ ,} | 自定义量词开始标记,结束标记
|
2.模式中方括号内的部分称为“字符类”
元字符 | 说明 |
转义字符 | |
^ | 仅在作为第一个字符时,表明字符类取反 |
- | 标记字符范围 |
元字符用法说明举例
1.转义(反斜线)
后紧跟着一个非字母数字字符,则取消该字符可能具有的任何特殊含义。此种适用于字符类之中或之外。
对于非数字字母的字符,总是需要其进行原文匹配时候在它前面加一个反斜线,来代表它代表自己。
匹配 “*” 时,由于其有特殊含义,所以用 “*”取消掉了其特殊含义
匹配”.”用”.”
匹配”” 用”\”
但要注意:
反斜线在单引号字符串和双引号字符串中都有特殊含义,因此要匹配一个反斜线,模式中必须写”\\”或’\’
2.反斜线第二种用途提供了一种对非打印字符进行可见编码的控制手段。除了二进制的0会终结一个模式外,并不会严格的限制非打印字符(自身)的出现,但是当一个模式以文本编辑器的方式编辑准备的时候,使用下面的转义序列相比比使用二进制字符会更容易。
符号 | 说明 |
a |
响铃字符(十六进制 07)
|
cx | "control-x",x 是任意字符
|
e | 转义 (十六进制 1B)
|
f | 换页 (十六进制 0C)
|
n | 换行 (十六进制 0A)
|
p{xx} (p小写) | 一个符合 xx 属性的字符 |
P{xx} (p大写) | 一个不符合 xx 属性的字符 |
r | 回车 (十六进制 0D)
|
t | 水平制表符 (十六进制 09)
|
xhh | hh十六进制编码的字符 |
ddd | ddd八进制编码的字符,或者后向引用
|