正则表达式

正则表达式是一种匹配字符串的规则,不属于任何语音。它主要包含字符组、元字符、量词三大模块

字符组[]

字符组是一组字符的集合,用[]括起来
匹配单一字符时,可以不用[]
示例:

正则表达式 匹配文本 匹配结果
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>

posted @ 2022-12-02 23:22  saiya6  阅读(61)  评论(0)    收藏  举报