正则表达式

什么是正则表达式?

  利用一些特殊符号的组合去字符串中筛选出符合条件的数据

  • 正则表达式是一门独立的语言,跟其他编程语言都没有关系
  • 如果想在python代码中使用正则,需要借助于内置模块re

  eg:校验手机号

import re
phone = input('phone number:')
if re.match('^(13|14|15|18)[0-9]{9}$',phone_number):
    print('是合法的手机号码')
else:
    print('不是合法的手机号码')

正则表达式-字符组

特征是使用中括号括起来,字符串默认只能单个单个字符匹配

[0123456789]  匹配0到9之间任何一个数字

  可以简写为

  [0-9]

[a-z]      匹配小写字母a到字母z其中任意一个字母

[A-Z]       匹配大写字母A到字母Z其中任意一个字母  

[a-zA-Z0-9]   匹配所有的数字、大写、小写字母

正则表达式-特殊符号

特殊符号默认也只能单个单个字符匹配

.     匹配除换行符以外的任意字符

\d       匹配数字

^     匹配字符串的开始

$     匹配字符串的结尾

    """^与$组合使用可以精准限制要查找的数据"""

a|b    匹配字符a或字符b

()    匹配括号内的表达式也表示一个组(不会影响正则表达式的匹配单纯的分组而已)

[...]    匹配字符组中的字符

[^...]   匹配除了字符组中字符的所有字符

正则表达式-量词

  1.表达式在没有量词修饰的情况下 都是单个单个匹配

  2.量词必须结合(字符串、特殊符号等)一起使用,不能单独出现

  3.量词只能影响前面的一个表达式(ab+ 只能影响b)

  *    重复零次或更多次

  +    重复一次或更多次

  ?     重复零次或一次

  {n}    重复n次

  {n,}      重复n次或更多次

  {n,m}   重复n到m次

贪婪匹配与非贪婪匹配

待匹配的字符串:<script>123</script>

正则表达式

<.*>  默认贪婪匹配 尽可能多的匹配

匹配结果:<script>123</script>

将贪婪变为非贪婪 只需要在量词的后面加问号即可

<.*?>  非贪婪匹配 尽可能少的匹 结束条件有左右两边决定

匹配结果:<script>

posted @ 2021-11-24 19:04  skuukzky  阅读(41)  评论(0)    收藏  举报