《零基础入门学习Python》学习过程笔记【57正则表达式】

1什么是正则表达式?

正则表达式本身就是描述规则的工具,用于指定字符串的查找


2正则表达式使用什么模块? re

即 import re


3.re.search((r"b","a")的作用? 在字符串a中查找字符串b(也称正则表达式)第一次出现的位置

re.search(r"b","a") 注意不要漏写r

>>> import re
>>> re.search(r"cde","abcdef")
<_sre.SRE_Match object; span=(2, 5), match='cde'>  #左闭右开,且索引从0开始
#如果找不到的话会返回None(就是啥也不返回)


4.正则表达式中的点(.)有什么作用?通配符(可以代替换行符之外的任意一个字符)

<_sre.SRE_Match object; span=(0, 1), match='a'>  #匹配一个任意字符,左闭右开
>>> re.search("..","abcdef")
<_sre.SRE_Match object; span=(0, 2), match='ab'>  #匹配任意两个任意字符,左闭右开


>>> re.search("bcd.","abcdef") #查找bcd. 点代表任意字符
<_sre.SRE_Match object; span=(1, 5), match='bcde'> 找到bcde ,返回左闭右开的字符串所在范围


5.如何在正则表达式中做到去查找点(.)号本身?(因为在正则表达式中.表示通配符 ) .

>>> re.search(r".","www.baidu.com")
<_sre.SRE_Match object; span=(3, 4), match='.'>


6.如何匹配一位数字? d

d表示匹配任何一位数字   d的范围?[0,9]

>>> re.search(r"d","abcd1234")
<_sre.SRE_Match object; span=(4, 5), match='1'>   #匹配数字1
>>> re.search(r"ddd","abcd1234")
<_sre.SRE_Match object; span=(4, 7), match='123'>  #匹配数字123 

7如何机智的写出查找ip地址的代码?

不机智的写法:

>>> re.search(r"ddd.ddd.ddd.ddd","192.168.254.123")
<_sre.SRE_Match object; span=(0, 15), match='192.168.254.123'>

不机智的原因:1IP地址7由四组数字组成,每组数字的范围是【0.255】。上面这种写法把每组数字都视为3位数

2dd\d可以表示【000,999】范围内的数字,超过255的都不是我们需要的结果


机智的写法:

为了表示字符串的范围,我们可以创建一个字符类

如何创建字符类? 用[]

字符类的含义?只要匹配字符类中的任何一个字符,那么都叫做匹配

>>> re.search(r"[def]","abcdef")
<_sre.SRE_Match object; span=(3, 4), match='d'>  #匹配了d

在字符类中用-表示范围 [a-z]表示所有的英文字母中的一个

>>> re.search(r"[a-z]","bcde")
<_sre.SRE_Match object; span=(0, 1), match='b'>  #找到了a


如何设置某个字符重复的次数?{}

ab{3} 表示abbb

>>> re.search(r"ab{3}c","abbbcc")
<_sre.SRE_Match object; span=(0, 5), match='abbbc'>

如何设置某个字符重复的次数的范围?

>>> re.search(r"ab{1,10}","abbbbbb")      #ab,abb,abbb,abbbb,abbbbb……只要在第二个参数中存在就会被匹配

<_sre.SRE_Match object; span=(0, 7), match='abbbbbb'>


注:字符类"[0-255]"表示 "[0125]"因为"[]"中只表示其中的一个字符

在字符串中1-9都是字符,10就是两个字符


如何用整则表达式表示[0,255]范围内的数字?

d|[1-9]d|1dd|2[0-4]d|25[0-5])


|表示或

d表示 【0,9】

[1-9]d 表示【10,19】【20,29】【30,39】【40,49】【50,59】【60,69】【70,79】【80,89】【90,99】

1dd 表示【100,199】

2[0-4]d 表示【200,209】【210,219】【220,229】【230,239】【240,249】

25[0-5] 表示【250,259】

查找ip地址:

>>> re.search(r"((d|[1-9]d|1dd|2[0-4]d|25[0-5]).){3}d|[1-9]d|1dd|2[0-4]d|25[0-5]","192.168.1.1")
<_sre.SRE_Match object; span=(0, 11), match='192.168.1.1'>

注意:小括号表示分组




















原文地址:https://www.cnblogs.com/iamjuruo/p/7470873.html