正则表达式
正则表达式是一种匹配字符串的规则,不属于任何语音。它主要包含字符组、元字符、量词三大模块
字符组[]
字符组是一组字符的集合,用[]括起来
匹配单一字符时,可以不用[]
示例:
| 正则表达式 | 匹配文本 | 匹配结果 |
|---|---|---|
| a | abc | a |
| ab | abc | ab |
| 7 | ab7c | 7 |
匹配多种字符时,可以用中括号,中括号中可以加'-',表示范围
| 正则表达式 | 匹配文本 | 匹配结果 |
|---|---|---|
| [abc] | abcdefg | a, b, c |
| [3-6] | abc3568defg | 3,5,6 |
| [c-e] | abc3568defg | c, d, e |
在[]中使用"^", 即[^],表示非字符组,只要不在[]中的字符都可以匹配
示例:
| 正则表达式 | 匹配文本 | 匹配结果 |
|---|---|---|
| [^a] | abc | b, c |
元字符
元字符是一种代表特殊字符范围的字符,通常前面会带有''表示转义
| 元字符 | 含义 |
|---|---|
| \d | 匹配所有的数字 |
| \D | 除数字之外,都匹配 |
| \w | 匹配大小写字母、数字、下划线 |
| \W | 除大小写字母、数字、下划线之外,都匹配 |
| \s | 匹配空格、换行符、制表符 |
| \S | 除了空白之外,都匹配 |
| \t | 匹配制表符 |
| \n | 匹配换行符 |
| . | 匹配除了换行符之外的所有字符 |
| ^ | 匹配字符串的开头 |
| $ | 匹配字符串的结尾 |
另外,"|"表示或运算,()表示分组
量词{}
| 量词 | 含义 |
|---|---|
| 表示只能出现n次 | |
| 表示至少出现n次 | |
| 表示至少出现n次,最多m次 | |
| ? | 表示匹配0次或1次 |
| + | 表示匹配1次或多次 |
| * | 表示匹配0次或多次 |
贪婪匹配?
?号放在元字符后面时,表示?号是一个量词,匹配0次或者1次
?号放在量词后面时,表示非贪婪匹配
正则表达式默认是贪婪匹配模式,也就是尽量匹配多的字符
示例:
| 正则表达式 | 匹配文本 | 匹配结果 |
|---|---|---|
| <.+> | <html>hello</html> | <html>hello</html> |
解释:贪婪匹配会尽可能多的匹配,从第一个<开始,匹配到最后一个>,所以结果是<html>hello</html>,而不是<html>
在量词的后面加一个?,可以使正则表达式变为非贪婪匹配,在非贪婪匹配中,会尽可能少的进行匹配
示例:
| 正则表达式 | 匹配文本 | 匹配结果 |
|---|---|---|
| <.+?> | <html>hello</html> | <html>, </html> |
解释:+号是量词,在+号后面加上一个?号,正则表达式就变成了非贪婪匹配,会尽可能少的匹配,从第一个<开始,匹配到第一次个>,得到了是<html>,后面又匹配到了</html>,所以匹配结果有两个,即<html>和</html>
浙公网安备 33010602011771号