三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 368|回复: 0
打印 上一主题 下一主题

正则表达式实例

[复制链接]

1657

主题

1684

帖子

5684

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5684
跳转到指定楼层
楼主
发表于 2017-7-14 09:50:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
正则表达式实例:
  1. #!/usr/bin/python
  2. import re
  3. line = "Cats are smarter than dogs"
  4. matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)
  5. if matchObj:
  6.         print "matchObj.group() : ", matchObj.group()
  7.         print "matchObj.group(1) : ", matchObj.group(1)
  8.         print "matchObj.group(2) : ", matchObj.group(2)
  9. else:
  10.         print "No match!!"
复制代码
正则表达式:
  1. r'(.*) are (.*?) .*'
复制代码
解析:
首先,这是一个字符串,前面的一个 r 表示字符串为非转义的原始字符串,让编译器忽略反斜杠,也就是忽略转义字符。但是这个字符串里没有反斜杠,所以这个 r 可有可无。
(.*) 第一个匹配分组,.* 代表匹配除换行符之外的所有字符。
(.*?) 第二个匹配分组,.*? 后面多个问号,代表非贪婪模式,也就是说只匹配符合条件的最少字符
后面的一个 .* 没有括号包围,所以不是分组,匹配效果和第一个一样,但是不计入匹配结果中。
matchObj.group() 等同于 matchObj.group(0),表示匹配到的完整文本字符
matchObj.group(1) 得到第一组匹配结果,也就是(.*)匹配到的
matchObj.group(2) 得到第二组匹配结果,也就是(.*?)匹配到的
因为只有匹配结果中只有两组,所以如果填 3 时会报错。

回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-5-20 01:40 , Processed in 0.029055 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表