zoukankan      html  css  js  c++  java
  • 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

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

  • 相关阅读:
    用JSP实现的商城购物车模块
    PHP Filesystem 函数(文件系统函数)(每日一课的内容可以从php参考手册上面来)
    PHP unlink() 函数(删除文件)
    $_SERVER['DOCUMENT_ROOT']
    thinkphp模型事件(钩子函数:模型中在增删改等操作前后自动执行的事件)
    php实现字符串替换
    js私有变量
    js模仿块级作用域(js没有块级作用域私有作用域)
    unity 3d开发的大型网络游戏
    thinkphp5项目--企业单车网站(八)(文章板块要点)(删除图片)
  • 原文地址:https://www.cnblogs.com/diwangguilai/p/9370544.html
Copyright © 2011-2022 走看看