`

python中的正则表达式,python

阅读更多
# coding=utf-8
'''
Created on 2017年2月5日

@author: chenkai

就把正则表达式的相关内容到这里填充一下。 今天说说元字符是什么东西。 
\     ^    $   *    +     .    |    ?    {}    []    ()        
这就是元字符了,学会这些应该就够你用的了。
python中的正则表达式通过import re 来使用。
www.iplaypython.com python教程
'''
#正则表达式是引入re包
import re
s = r"abc" # 定义一个字符串规则,加r为了保持字符串愿意
text ="abcderg,bcdea,cba,abcd"
textre= re.findall(s, text)#re.findall可以获取字符串中所有匹配的字符串,本例表示在text中匹配"abc"
print textre#匹配结果为list列表


text2="top tip tcp ttp tpp tlp topit"
res=r"t[oci]p"
textre2=re.findall(res, text2)
print "匹配:%s"%textre2

res3=r"t[^oci]p"
textre3=re.findall(res3, text2)
print "取反:%s"%textre3

'''
[a-z]表示 从字母a到z所有的字母。 
[0-9]等价于[0123456789] 也可以用\d 表示。   所有其它的元字符在[]中将失去原有的意义,比如示例中的^在[]表示取反。 

2,^ 表示匹配字符串的开头。在多行模式下匹配每一行的开头。
注:^一般放在字符串开头 
'''
s2="hello world hello hello"
s3="a hello world hello "
ress2=r"^hello"
print re.findall(ress2, s2)
print re.findall(ress2, s3) # hello 不再开头 所以没有结果

'''
$ 表示匹配字符串的结尾。在多行模式下匹配每一行的尾部。
'''
s4="a hello world hello"
ress3=r"hello$"
print re.findall(ress3, s4)


'''
\反斜杠后面可以加不同的字符以表示特殊意义。 也可用于取消所有元字符,变为普通符号。
\d  匹配任何十进制数:相当于[0-9] 
\D 匹配任何非数字字符:相当于 [^0-9]
\s 匹配任何空白字符:相当于 [\t\n\r\f\v]
\S 匹配任何非空白字符:相当于 [^\t\n\r\f\v]
\w 匹配任何字母数字下划线字符:相当于[a-zA-Z0-9_]
\W 匹配任何非字母数字下划线字符:相当于[^a-zA-Z0-9_]   

'''
s111="hf_jadlfhj343 l 433 45jj h5 4 3 2 5kjh54354@#$%^__"
res111=r"\d"#取0-9
print re.findall(res111,s111)

res222=r"\D"#取非0-9
print re.findall(res222,s111)

res333=r"\s"#取空白符
print re.findall(res333,s111)

res444=r"\S"#取非空白符
print re.findall(res444,s111)

res555=r"\w" #取任何字母数字下划线字符
print re.findall(res555,s111)

res666=r"\W" #取任何非字母数字下划线字符
print re.findall(res666,s111)

'''
正则表达式可以匹配不定长的字符集,另外也可以指定字符串的重复次数。
* (星号) 指定前一个字符可以匹配0次或者多次,而不是只有1次,匹配结果会尽可能的重复多次最大不超过20亿次。
(后面若加问号?变为非贪婪模式仅匹配0次:ab*? 结果为a)
+ (加号)   匹配前一个字符1次或者多次。
(后面若加问号?变为非贪婪模式仅匹配1次:ab+? 结果为ab)
? (问号) 匹配前一个字符0次或者1次。
(后面若加问号?变为非贪婪模式仅匹配0次:ab?? 结果为a) ?可以是python原本的贪婪模式变为非贪婪模式。 
{m} (花括号) m是数字,表示重复前一个字符m次。
{m,n} 表示重复前一个字符m-n次。若省略m则表示0-n次,若省略n表示m到无限次。
(后面若加问号?变为非贪婪模式仅匹配0次:ab{2,100}? 结果为abb)
'''

tellphoneNumber="010-12345678 01067896523 010987654321 010-363636363636  0755-56859866"
restell = r"010-\d*" #\d表示[0-9] *表示重复0次或者无限次
print re.findall(restell,tellphoneNumber)

restell2 = r"010-\d+" #\d表示[0-9] +表示重复1次或者无限次
print re.findall(restell2,tellphoneNumber)


restell3 = r"010-?\d+" #\d表示[0-9] ?表示重复1次或者0次  在这里表示 “-” 字符可有可无
print re.findall(restell3,tellphoneNumber)

restell4 = r"010-?\d{8}" #\d表示[0-9] ?表示重复1次或者0次  在这里表示 “-” 字符可有可无 {8} 表示匹配到后面八位字符
print re.findall(restell4,tellphoneNumber) #11位电话号码,格式正确

#匹配开头是 3到4 为的电话号码
restell5 = r"\d{3,4}-?\d{8}" #\d表示[0-9] ?表示重复1次或者0次  在这里表示 “-” 字符可有可无 {8} 表示匹配到后面八位字符
print re.findall(restell5,tellphoneNumber) #11位电话号码,格式正确

'''
下面是个三个元字符。这三个在爬虫的正则表达式中常被用到,请爱它们。  
( )  |  .   . 它匹配除了换行字符外的任何字符,在 alternate 模式(re.DOTALL)下它甚至可以匹配换行 

| 代表左右表达式任意匹配一个。a|b 匹配a或者匹配b 。   如果没有被(...)括起来它的范围是整个正则表达式。
 
(...) 将正则表达式分组,每个分组为一个整体,将优先返回分组内的数据。   接下来我们来匹配一个玩蛇网的title html代码
'''
html=" <title>玩蛇网论坛-Python编程开发主题学习社区 -  Powered by Discuz!</title> "
rest=r"<title>(.+)</title>"
print re.findall(rest,html)

s666="qiaodaimababiekanle"
res666=r"a|i" #匹配a或i
print re.findall(res666,s666)








分享到:
评论

相关推荐

    python使用正则表达式提取网页URL的方法

    本文实例讲述了python使用正则表达式提取网页URL的方法。分享给大家供大家参考。具体实现方法如下: import re import urllib url=//www.jb51.net s=urllib.urlopen(url).read() ss=s.replace( ,) urls=re.findall...

    第11.25节 Python正则表达式编译re.compile及正则对象使用.rar

    总结,`re.compile()`是Python正则表达式的重要工具,它使得我们可以预先编译正则表达式模式,提高程序的效率和可读性。通过创建正则表达式对象,我们可以灵活地执行多种正则操作,如查找、替换和分割字符串,从而在...

    Python-Pyregex是一个开源在线的Python正则表达式编辑器测试器

    总之,Pyregex是一个非常实用的Python正则表达式工具,它让正则表达式的测试和调试变得直观和简单,是Python开发过程中不可或缺的辅助工具。对于学习和掌握正则表达式,以及提升Python文本处理能力,Pyregex都是一个...

    Python正则表达式标准库使用教程.pdf

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。   ...

    python正则表达式使用指南

    【Python正则表达式使用指南】是一篇专为Python初学者设计的教程,旨在帮助读者理解和运用Python中的正则表达式。这篇文档采用中英文对照的方式,内容清晰易懂,适合快速学习和实践。 正则表达式是用于匹配字符串的...

    Python字正则表达式案例

    Python字正则表达式案例

    Python正则表达式基础

    Python正则表达式基础是学习如何在Python中应用正则表达式的入门指南。正则表达式,或称为REs、regexes、regexpatterns,是能够嵌入到Python中的一个精细、高度专业化的程序语言。通过re模块,程序员得以使用这一...

    [Python]网络爬虫(七):Python中的正则表达式教程.pdf

    6. Python正则表达式的示例 - 编译正则表达式:`pattern = ***pile(r'hello')` - 匹配字符串:`match1 = pattern.match('helloworld!')` - 提取匹配信息:`match1.group()` - 使用标志位编译:`pattern = ***...

    python正则表达式全部方法

    一个描述全部python正则方法,正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。 ...

    [小小明]Python正则表达式全套笔记v0.3(1.8万字干货)

    Python正则表达式全套笔记v0.3 本文档是小小明个人笔记,涵盖了正则表达式的各个方面,包括各种模式、分组、断言、匹配、查找、替换和切割等。文档中提供了详细的正则匹配规则表,涵盖了基本字符规则、预定义字符集...

    python正则学习_python正则_pagedbm_python_正则表达式_

    Python正则表达式是Python编程语言中的一个强大工具,它用于处理字符串,执行模式匹配和文本提取。在Python中,正则表达式主要用于处理文本数据,例如从日志文件中提取特定信息,验证用户输入,或者从网页内容中抓取...

    python 正则表达式 详解(英文)

    Python正则表达式是专门用于在字符串中匹配字符组合的一个强大的工具,它使用一种特殊的语法来表示搜索模式。正则表达式不仅在Python中有着广泛的应用,在UNIX世界中也扮演了重要的角色。本文档主要介绍Python中与...

    Python正则表达式指南.pdf

    Python正则表达式是处理字符串的强有力工具,它拥有独立于Python语言本身的语法和独立的处理引擎。虽然正则表达式在处理字符串时效率上可能不及Python内建的字符串处理方法,但其功能强大且使用广泛。正则表达式的...

    清华大学精品Python学习PPT课件-第5章 Python正则表达式.pptx

    总的来说,掌握Python中的字符串处理和正则表达式是任何Python开发者必备的技能,无论是在数据处理、文本分析还是网络爬虫等领域都有广泛应用。通过清华大学的精品课程,学习者可以系统地学习并掌握这些重要的编程...

    Python实现正则表达式匹配任意的邮箱方法

    在Python中,正则表达式的功能通过re模块实现,它提供了一系列方法来支持正则表达式操作。 首先,我们来看如何利用Python实现匹配特定邮箱地址,比如163邮箱。在这里,我们使用了正则表达式r'[0-9a-zA-Z_]{0,19}@**...

    Shell与Python正则表达式参考

    在Python中,正则表达式通过`re`模块来实现,提供了更丰富的功能和灵活性。 在Shell中,正则表达式使用特殊的字符来表示特定的字符集或模式。以下是一些常用的Shell正则表达式字符及其含义: 1. `[[:alnum:]]`:...

    Python的正则表达式的验证

    首先是正则表示的验证,先画出NFA的图,在进行NFA转DFA之后,形成闭包,然后将输入的正则表达式进行验证。

    Python正则表达式操作指南%2B-%2BUbuntu中文.pdf

    ### Python正则表达式操作指南知识点详解 #### 1. 简介 - **re模块**: Python自1.5版本起引入了`re`模块,该模块支持Perl风格的正则表达式模式。与之前的`regex`模块提供的Emacs风格相比,`re`模块更加功能强大且...

Global site tag (gtag.js) - Google Analytics