≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > Python

Python正则表达式的简单示例

人气:622 时间:2018-10-05

这篇文章主要为大家详细介绍了Python正则表达式的简单示例,具有一定的参考价值,可以用来参考一下。

对python这个高级语言感兴趣的小伙伴,下面一起跟随四海网的小编两巴掌来看看吧!

正则表达式是搜索、替换和解析复杂字符串的一种强大而标准的方法,Python中的正则相关的东西全在re模块下。

1 常用的匹配

^匹配字符串的开始

$匹配字符串的结尾

\b匹配一个单词的边界

\d匹配任意数字

\D匹配任意非数字字符

x?匹配一个可选的x(匹配1次或0次x字符)

x*匹配0次或多次x

x+匹配1次或多次x

x{n,m}至少n次,至多m次x

(a|b|c)要么匹配a,要么匹配b,要么匹配c

(x)一般情况下表示一个记忆组,你可以利用re.search函数返回对象的groups()函数来获取它的值

2 一般用途


# @param Python正则表达式基础
# @author 四海网|q1010.com 

#-------------------------------------------------------------------------------
# coding:        utf-8
# Purpose:正则表达式
#
# Author:      zdk
#
# Created:     26/02/2013
# Copyright:   (c) zdk 2013
#-------------------------------------------------------------------------------
 
import re
if __name__ == '__main__':
    addr = "100 BROAD ROAD APT.3"
    print(re.sub("ROAD","RD",addr)) # 100 BRD RD APT.3
    print(re.sub(r"\bROAD\b","RD",addr)) # 100 BROAD RD APT.3
    pattern = ".*B.*(ROAD)?"
    print(re.search(pattern,"ROAD")) #None
    print(re.search(pattern,"B")) #<_sre.SRE_Match object at 0x0230F020><span style="background-color:#FAFAFA;font-family:Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace;font-size:1em;line-height:1.5;">&nbsp;</span>

# End www_512pic_com

 

(1)re.sub("ROAD","RD",addr) 利用re.sub函数对字符串addr进行搜索,满足表达式"ROAD"的用“RD”替换

(2)re.sub(r"\bROAD\b","RD",addr) ,“\b”含义是“单词的边界”,在Python中,由于字符“\”在字符串中必须转义,这会变得非常麻烦,所以Python用前缀r表示字符串中的所有字符都不转义。

(3)re.search(pattern,"ROAD") re模块有一个search函数,该函数有两个参数,一个是正则表达式,一个是字符串,search函数返回一个拥有多种方法可以描述这个匹配的对象,如果没有发现匹配,则返回None。

3 松散正则表达式

上面均是“紧凑”类型的表达式,它比较难以阅读,即使现在清楚表达式的含义,也不能保证几个月后还能记得。所以Python允许用户利用所谓的松散正则表达式来完成内联文档的需要,和一般的表达式有以下两个方面的主要区别

忽略空白符。空格符、制表符、回车符不匹配它们自身(如果你想在松散正则表达式中匹配一个空格符,你不须在它前面添加一个反斜杠符号对它进行转义)

忽略注释。和普通的Python代码一样,注释开始于#符号,结束于行尾。


# @param Python正则表达式基础
# @author 四海网|q1010.com 

#松散带有内联注释的正则表达式
    pattern = """
    ^   # begin of string
    M{0,3} # 0 to 3 M
    (CM|CD|D?C{0,3}) #CM or CD or D or D 0 to 3 C
    $   #end of string
    """
    print(re.search(pattern,"MCM",re.VERBOSE)) #<_sre.SRE_Match object at 0x021BAF60>
    print(re.search(pattern,"M99",re.VERBOSE)) #None

# End www_512pic_com

(1)当使用松散正则表达式时,最重要的一件事就是:必须传递一个额外的参数re.VERBOSE,它是re模块的一个常量,标志着待匹配的正则表达式是一个松散正则表达式。pattern的空格和注释都是被忽略的,但同时具有更好的可读性。

4 个例研究:解析电话号码

必须匹配如下电话号码:

800-555-1212

800 555 1212

800.555.1212

(800)555-1212

1-800-555-1212

800-555-1212-1234

800-555-1212x1234

800-555-1212 ext.1234

work 1-(800) 555,1212 #1234

格式比较多,我们需要知道的是800为区号,干线号为555,电话号的其他数字为1212,对于有分机号的,我们需要知道分机号为1234


# @param Python正则表达式基础
# @author 四海网|q1010.com 

phonePattern = re.compile(r'''
    # don't match beginging of string
(\d{3}) # 3 digits
\D*     #any number of non-digits
(\d{3}) # 3 digits
\D*     #any number of non-digits
(\d{4}) # 4 digits
\D*     #any number of non-digits
(\d*)   #any number of digits
''',re.VERBOSE)
print(phonePattern.search('work 1-(800)555.1212 #1234').groups()) #('800', '555', '1212', '1234')

# End www_512pic_com

 

print(phonePattern.search('work 1-(800)555.1212 #1234').groups()) #('800', '555', '1212', '1234')

(1)一个松散正则表达式如上, 首先匹配3个数字区号(不一定从第一个字符开始,所以没有用^),接着后面匹配任意多个非数字的字符,接着匹配3个数字干线号,接着匹配任意多个非数字的字符,接着匹配4个数字号码,接着匹配任意多个非数字的字符,接着匹配任意多个数字的分机号,然后用groups函数分组,得到正确的电话号码。

本文来自:http://www.q1010.com/181/2058-0.html

注:关于Python正则表达式的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:正则表达式

您可能感兴趣的文章

  • Python正则表达式常用函数菜鸟教程
  • JavaScript 正则表达式删除超链接的简单示例
  • php 过滤html 的正则表达式示例
  • php通过正则表达式从字符串剔除非ASCII码字符示例
  • php 常用正则表达式汇总
  • php 利用正则表达式识别链接URL的简单示例(支持中文)
  • JS 使用正则表达式获取分组内容的简单示例
  • php 利用正则表达式验证邮件地址的简单示例
  • php 匹配url的正则表达式示例
  • php 正则表达式检查邮件地址是否正确的简单示例
上一篇:Python2和Python3的10大区别解析
下一篇:python xml读取和写入功能实例
热门文章
  • Python 处理Cookie的菜鸟教程(一)Cookie库
  • python之pandas取dataframe特定行列的简单示例
  • Python解决json.dumps错误::‘utf8’ codec can‘t decode byte
  • Python通过pythony连接Hive执行Hql的脚本
  • Python 三种方法删除列表中重复元素的简单示例
  • python爬虫代码示例
  • Python 中英文标点转换示例
  • Python 不得不知的开源项目解析
  • Python urlencode编码和url拼接实现方法
  • python按中文拆分中英文混合字符串的简单示例
  • 最新文章
    • Python利用numpy三层神经网络的简单示例
    • pygame可视化幸运大转盘的简单示例
    • Python爬虫之爬取二手房信息的简单示例
    • Python之time库的简单示例
    • OpenCV灰度、高斯模糊、边缘检测的简单示例
    • Python安装Bs4及使用的简单示例
    • django自定义manage.py管理命令的简单示例
    • Python之matplotlib 向任意位置添加一个子图(axes)的简单示例
    • Python图像标签标注软件labelme分析的简单示例
    • python调用摄像头并拍照发邮箱的简单示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。