Python正则表达式应用

正则表达式在我们之前学习过的js语言中有过正则的表达式主要的作用是用来做的信息的验证,而我们现在的Python正则呢和js的类似,但是用法上还是有很大的区别的

Python的正则在一后的大数据的处理方面 用到的还是比较多的

什么是正则?

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

 

正则表达式模式

 

模式字符串使用特殊的语法来表示一个正则表达式:

 

.   匹配任意字符,除了换行符
\s   一个空格
\S    一个非空格
\d   表示一个数字
\D   表示一个非数字
\w    任意字母数字
\W   非字母数字

[a5$ t] 序列
编辑和量的符号
` 以开头,不包含
$已结尾
? 0或者1 匹配
+ 1到任意多个匹配
* 1到任意多个匹配
{n,m} n 到 m个匹配
() 组
以下实例就是正则的一种简单的用法

 

 

pattern=r'(.*) [0-9] (.*?) .*'r'(.*) [0-9] (.*?) .*'

 

 

 

正则表达式的一些基本方法的使用用法:

 

import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print ("searchObj.group() : ", searchObj.group())
   print ("searchObj.group(1) : ", searchObj.group(1))
   print ("searchObj.group(2) : ", searchObj.group(2))
else:
   print ("Nothing found!!")     re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print ("searchObj.group() : ", searchObj.group())
   print ("searchObj.group(1) : ", searchObj.group(1))
   print ("searchObj.group(2) : ", searchObj.group(2))
else:
   print ("Nothing found!!")    
  上面的示例中呢首先我们要是用正则表达式呢,我们首先需要导入正则的模块: import reimport re
   基本语法:  re.match(pattern, string, flags=0) :re.match只匹配字符串的开始,如果字符串开始不符合正则表达				式,则匹配失败,函数返回None	re.match(pattern, string, flags=0) :re.match只匹配字符串的开始,如果字符串开始不符合正则表达				式,则匹配失败,函数返回None	
 
re.search(pattern, string, flags=0) :re.search匹配整个字符串,直到找到一个匹配。.search(pattern, string, flags=0) :re.search匹配整个字符串,直到找到一个匹配。
 
参数描述
pattern匹配的正则表达式
string要匹配的字符串。
flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。
 

实例:

#!/usr/bin/python3

import re

line = "Cats are smarter than dogs";

matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print ("match --> matchObj.group() : ", matchObj.group())
else:
   print ("No match!!")

matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:
   print ("search --> matchObj.group() : ", matchObj.group())
else:
   print ("No match!!")

import re

line = "Cats are smarter than dogs";

matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print ("match --> matchObj.group() : ", matchObj.group())
else:
   print ("No match!!")

matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:
   print ("search --> matchObj.group() : ", matchObj.group())
else:
   print ("No match!!")

以上实例运行结果如下:

No match!!
search --> matchObj.group() :  dogs match!!
search --> matchObj.group() :  dogs

以上是两种正则匹配验证的区别,当然为了方便 我们这两种方法都提供了group()的概念,下面通过一个简单的例子 来看看:

 

#!/usr/bin/python3
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:
   print ("matchObj.group() : ", matchObj.group())
   print ("matchObj.group(1) : ", matchObj.group(1))
   print ("matchObj.group(2) : ", matchObj.group(2))
else:
   print ("No match!!")
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:
   print ("matchObj.group() : ", matchObj.group())
   print ("matchObj.group(1) : ", matchObj.group(1))
   print ("matchObj.group(2) : ", matchObj.group(2))
else:
   print ("No match!!")

 

以上实例执行结果如下:

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

我们这个group(),的结果是根据正则r'(.*) are (.*?) .*',来的 第一个括号里面呢就是第一组,第二个括号里面的就是第二组

整个的是一个大组所以上面的结果就是第一组匹配的就是are 前面的所有字符就是上面的运行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值