正则表达式一

来源:互联网 发布:淘宝呼死你哪里有卖 编辑:程序博客网 时间:2024/06/06 19:31

在编写处理字符串或者网页的时候,常常会有查找某些复杂规则字符串的需要。

注意:正则表达式匹配的只有字符串

方法介绍

search()方法

search()方法用于搜索正则表达式模式第一次出现的位置

import rere.search(r'FishC' , 'I love FishC.com')

输出结果

<_sre.SRE_Match object; span=(7, 12), match='FishC'>

使用search()方法时最好对于要搜索的字符串前加一个r,这样能过避免很多不必要的麻烦。另外注意搜素位置是从0开始的。如果找不到返回None

在正则表达式中”.”可以表示除了换行符之外的任何字符

re.search(r'.' , 'I love FishC.com')

返回的是第0个位置

<_sre.SRE_Match object; span=(0, 1), match='I'>

如果只想单单匹配”.”本身用\就行

re.search(r'\.' , 'I love FishC.com')

结果:

<_sre.SRE_Match object; span=(12, 13), match='.'>

\还有特殊能力,比如用”\d”可以匹配任何数字

re.search(r'\d' , 'I love 123 FishC.com')

结果:

<_sre.SRE_Match object; span=(7, 8), match='1'>

如果

re.search(r'\d\d\d' , 'I love 123 FishC.com')

则会将123全部匹配

<_sre.SRE_Match object; span=(7, 10), match='123'>

匹配IP地址

为了表示字符串的范围可以创建一个字符类的东西: []

字符类的含义是只要匹配字符类的任意一个字符都算匹配
如匹配元音字符

re.search(r'[aeiou]' , 'I love 123 FishC.com')

因为正则表达式默认对大小写敏感,所以输出结果如下:

<_sre.SRE_Match object; span=(3, 4), match='o'>

如果想匹配“I”可以这样写:

re.search(r'[aeiouAEIOU]' , 'I love 123 FishC.com')

要注意的是字符类中任何一个类匹配成功,就算匹配成功

正则表达式中用”-“表示范围

re.search(r'[a-z]' , 'I love 123 FishC.com')<_sre.SRE_Match object; span=(2, 3), match='l'>

用{}来解决重复的次数

大括号表示大括号前一个字符重复的次数

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

还可以添加范围:

re.search(r'ab{1,4}c' , 'abbc abbbc')<_sre.SRE_Match object; span=(0, 4), match='abbc'>

但要注意的是:正则表达式匹配的只有字符串

re.search(r'[0-255]' , '188')<_sre.SRE_Match object; span=(0, 1), match='1'>

这里之所以匹配的是1而不是188的原因是数字对于字符来说只有0-9,所有的数字都是由0-9这几个字符组成的

因此[0-255]字符类表示的是[0-2]和两个5。所以实际匹配的是0、1、2、5这四个数字中的任何一个

如果真的想匹配到188该如何操作呢:

re.search(r'[01]\d\d|2[0-4]\d|25[0-5]', '188')<_sre.SRE_Match object; span=(0, 3), match='188'>

这段代码由三个或语句连接,“[01]\d\d”表示如果百位是0或1,那么各位和十位可以是任意数字。“2[0-4]\d”表示的是如果百位是2,十位是0-4,那么各位可以是任意数字。最后一个同理。

匹配IP地址

# 此处的(([01]{0,1}\d\d|2[0-4]{0,1}\d|25[0-5]|\d\d|\d)表示一个分组,后面跟着{3}表示重复查询三次#{0,1}表示0或1均可,如果不加的话必须是三位数才能被查到,与实际不符#{3}后面又加了一串是最后一位,因为不需要查‘.’所以单独写一遍re.search(r'(([01]{0,1}\d\d|2[0-4]{0,1}\d|25[0-5]|\d\d|\d)\.){3}([01]{0,1}\d\d|2[0-4]{0,1}\d|25[0-5]|\d\d|\d)','192.168.41.8')<_sre.SRE_Match object; span=(0, 12), match='192.168.41.8'>
原创粉丝点击