• python中re模块的使用


    正则表达式,听起来挺高大上,几乎所有的语言都有这个内容,python中是用re模块,接下来先介绍下什么是正则表达式,比如你要从一大串字符串中提取出你要的信息,www.baidu.com www.youtube.com,你要从中提取出baidu,youtube等字符串,怎么办呢,首先来分析它的结构,不难看出,这些字符串前面是www,后面是.com,中间就是我们要的部分,因此我们可以写一个这样的表达式

    p=r'www.(.+?).com'  其中的.是为了转义.,.在正则表达式中是通配符,可以匹配任何字符,这个表达式就可以匹配如www.baidu.com,www.sina.com这样的字符串了,那中间的(.+?)是什么意思呢,()代表的是第几个子模式,比如(0(1)(2)),其中的数字就代表第几个子模式,其实非常容易理解,就看左边有多少个(就可以,如果没有(,就默认为1,用一个()把所有的字符串包裹住,那现在我们的子模式1中就是baidu,sina等内容了,那这个?是什么意思呢,代表非贪婪模式,就是尽可能少匹配,一遇到后面是.com就停止匹配。说了这么多,上代码。

    import  re #导入re模块
    s=r'www.baidu.com www.youtube.com'
    pat=r'www.(.+?).com'
    p=re.compile(pat) #预编译正则表达式,下次使用可以缩短时间
    m=re.match(pat,s) #匹配s的开头的字符串,返回matchobject对象,如果是search()就是匹配所有的字符串
    print(m.group(1)) #打印第一个子模式的内容,指定了1,不指定就默认为0
    print(m.groups()) #打印所有子模式的内容,返回一个元组,
    print(re.findall(pat,s)) #打印出所有正则表达式匹配了字符串的内容,上面的是只匹配第一个,这个是匹配所有的

    结果如下:

    baidu
    ('baidu',)
    ['baidu', 'youtube']

    正则表达式的匹配规则:. 匹配所有内容,若想匹配它本身(一个点符号),r'.' 转移即可,[ a-z]字符集,匹配a-z的任意字母,其实就是任意一个小写字母,大写就是[A-Z],[^a-z ] 匹配非小写字母,^就是非,r'^ a  b$’,^开头为a,$结尾为b,w匹配字母和数字,d匹配数字, 匹配空格, 匹配tab

    还有很多匹配规则,这里只列出常用的,具体可以查看官方文档多练习

  • 相关阅读:
    周末之个人杂想(十三)
    PowerTip of the DaySorting Multiple Properties
    PowerTip of the DayCreate Remoting Solutions
    PowerTip of the DayAdd Help to Your Functions
    PowerTip of the DayAcessing Function Parameters by Type
    PowerTip of the DayReplace Text in Files
    PowerTip of the DayAdding Extra Information
    PowerTip of the DayPrinting Results
    Win7下IIS 7.5配置SSAS(2008)远程访问
    PowerTip of the DayOpening Current Folder in Explorer
  • 原文地址:https://www.cnblogs.com/diwangguilai/p/9370544.html
Copyright © 2020-2023  润新知