作用
在编写字符串处理程序时,经常会遇到查找符合某种规则的字符串,正则表达式就是用于描述这些规则的工具,或者说正则表达式是用来指定字符串模式的。
下面是一个简单的例子:
[Jj]ava.+
它可以匹配符合下面形式的字符串:
- 第一个字母是J或者j
- 下面的三个字符是ava
- 字符串的剩余部分可以是任意个字符串
语法
因此需要定义一些语法来理解正则表达式的含义。
- 一个字符类是可选的字符集合,用括号括起,例如[Jj ], [0-町、[A-Za-z]或者[^0-9] 。这里“-”表示一个范围,而“^”表示补集(除指定字符以外的所有字符)
- 有许多预先定义的字符类,例如 "\d" (数字)
- “.”符号符合任何字符
- 使用气"作为转义符。例如\.和.匹配,而\\匹配反斜线符号。
- ^和$分别匹配行首和行尾
- 如果X和Y是正则表达式,那么XY意味着"任何符合X并且后面符合Y的字符串, XIY意味着"任何符合X或者Y的字符串"。
- 可以对任何表达式X使用量词: X+( 1或者多个), X*(0或者多个),还有X?(0或者1) 。
- + 号代表前面的字符必须至少出现一次(1次或多次),例如:runoo+b,可以匹配 runoob、runooob、runoooooob 等
- * 号代表字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次),例如:runoo*b,可以匹配 runob、ru