这篇文章主要介绍“web正则表达式知识点有哪些”,在日常操作中,相信很多人在web正则表达式知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”web正则表达式知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
正则表达式是一套特殊字符和格式组成的对字符串进行运算的表达式,用表达式对目标字符串从左到右依次匹配,达成检索、过滤、摘取的目的。
判断用户输入内容是否符合要求。
将用户输入的内容与预先定义的表达式比对,若不符合要求则提示用户重输。
通过表达式约束输入的数据可以能够提高程序效率并减轻服务器压力。
常见案例如表单验证等。
从文件中获取所有符合表达式的内容。
能够高效的从大段字符串中快速找到符合表达式的内容。
常见案例如日志分析、爬虫等。
[ ] 一对中括号表示字符组,用来描述一个字符可匹配的规则。
[^] 非字符组,用来描述一个字符不可匹配的规则。
\ 在元字符前加\可用来取消元字符的特殊含义。
\d 匹配数字(小写d)。
\D 匹配非数字(大写D)。
\w 匹配数字字母下划线(小写w)。
\W 匹配非数字字母下划线(大写W)。
\s 匹配空格、制表符、换行符(小写s)。
\S 匹配非空白符(大写S)。
\t 匹配制表符(小写t)。
\n 匹配换行符(小写n)。
. 匹配除了换行符之外的所有(英文句号.)。
[\d\D]、[\w\W]、[\s\S] 匹配所有字符。
^ 匹配整个字符串的开始,只能写在开头,不能写在中间或后面(在字符组中定义为非的意思)。
$ 匹配整个字符串的结束,只能写在结尾,不能写在中间或前面。
| 或,例如a|b表示匹配a或b的内容,若匹配a成功则不会继续匹配b(所以总是把长的表达式放前面)。
() 分组,约束作用范围,在python的re模块中有特殊用处。
\b 匹配单词的开头或结尾,例如\bw匹配hello world中的w,o\b匹配hello中的o。
描述的是一个位置上能出现的所有可能性(一对中括号只表示一个字符位置)。案例如下:
[abc]匹配a或b或c。
范围匹配,可以描述多个范围,连着写即可。
[0-9]匹配数字0-9,ascii码48-57可匹配。
[A-Z]匹配大写英文字母A-Z,ascii码65-90可匹配。
[a-z]匹配小写英文a-z字母,ascii码97-122可匹配。
[a-zA-Z]匹配大小写字母。若用[A-z]匹配大小写英文字母还匹配[\]^_`这6个符号。
[0-9] -> \d 表示匹配数字 digit。
[0-9a-zA-Z_] -> \w 匹配数字、字母、下划线 word。
空白符(空格|tab|enter) -> ( |\t|\n) -> \s 表示所有空白符。
量词用来约束元字符生效次数,量词只能约束它前面的一个单元,可以是字符、字符组或分组。
{n} 表示匹配n次
{n,} 表示匹配最少n次
{n,m} 表示匹配最少n次、最多m次
? 表示匹配0次或1次 {0,1}
+ 表示匹配1次或多次 {1,}
* 表示0次或多次 {0,}
关于 ? + * 这三个符号经常会用到,请参考下图,务必要熟记它们的作用域。
最大匹配(又称贪婪匹配)
在量词范围内尽可能多的匹配内容。例如:.*x表示匹配任意字符任意多次,遇到最后一个x才停止。
案例:
表达式:\d{3,}6
目标:1234789135661947678914
结果:12347891356619476 (按回溯算法,从123开始一直匹配数字直到非数字或结束,再回溯找6)
最小匹配(又称惰性匹配)
在量词范围内尽可能少的匹配内容,量词后面加个?表示最小匹配。例如:.*?x表示匹配任意字符任意多次,遇到首个x就停止。
案例:
表达式:\d{3,}?6
目标:1234789135661947678914
结果:12347891356(按惰性匹配原则,从123开始一直匹配数字,一旦遇到6即停止匹配)
注意:2个??在一起的情况,前一个?是量词,表示匹配0或1次;后一个?表示最小匹配。例如:
1\d?3可以匹配13、123、133中的全部;1\d??3可以匹配13、123、133中的13、123、13(133不能匹配到,按惰性原则1数字可有可无,再后面找3,)
若需要使用元字符本身的意义时需要转义,在元字符前加\即可。
另外有一些有特殊意义的元字符,放在字符组中,会取消它的特殊意义。例如:
[().*+?] 中括号中的这些符号在字符组中会取消它们的特殊意义。
[a\-c] -在字符组中表示范围,若不希望它表示范围,需要用\转义或放在字符组的最前面或最后面。
到此,关于“web正则表达式知识点有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。