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

xiaoxiao2021-02-28  4

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"\d\d\d","abcd1234") <_sre.SRE_Match object; span=(4, 7), match='123'> #匹配数字123 7如何机智的写出查找ip地址的代码?

不机智的写法:

>>> re.search(r"\d\d\d\.\d\d\d\.\d\d\d\.\d\d\d","192.168.254.123") <_sre.SRE_Match object; span=(0, 15), match='192.168.254.123'> 不机智的原因:1IP地址7由四组数字组成,每组数字的范围是【0.255】。上面这种写法把每组数字都视为3位数

2\d\d\\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|1\d\d|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】

1\d\d 表示【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|1\d\d|2[0-4]\d|25[0-5])\.){3}\d|[1-9]\d|1\d\d|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.6miu.com/read-200188.html

最新回复(0)