免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 51itpub

正则表达式问题 [复制链接]

论坛徽章:
0
发表于 2018-04-18 20:25 |显示全部楼层
html5lib
或者h5py, 没有其他的包了。

你的环境是py3吧?

论坛徽章:
0
发表于 2018-04-18 20:26 |显示全部楼层

这个怎么用的?

论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
发表于 2018-04-19 08:39 |显示全部楼层
把你正则改一下不就好了吗?
  1. r'<Root>(.*?)</Root>'
复制代码

论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
发表于 2018-04-19 08:42 |显示全部楼层
把你的正则改一下不就好了吗?
  1. r'<Root>(.*?)</Root>'
复制代码

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-04-12 06:20:00
发表于 2018-04-19 11:33 |显示全部楼层

Hi dahe_1984,

只要把之前的代码
root_p = re.compile(r'<Root>(.*)?</Root>', re.IGNORECASE)rootLines = re.findall(root_p, lines)

改成:
root_p = re.compile(r'<Root>(.*?)</Root>', re.IGNORECASE)
rootLines = re.findall(root_p, lines)


就可以把<root>与</root>之间的数据提取出来了。 (.*)?-->(.*?)
(.*)?与(.*?)具体区别是什么,我也说不出来,都感觉是非贪婪
但从实际测试结果来看
(.*)?是贪婪
(.*?)则是非贪婪。

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-04-12 06:20:00
发表于 2018-04-19 11:34 |显示全部楼层
cfwyy 发表于 2018-04-19 08:42
把你的正则改一下不就好了吗?

是的,改一下就可以,谢谢cfwyy!

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-04-12 06:20:00
发表于 2018-04-19 11:35 |显示全部楼层
回复 21# dahe_1984
是Python36

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-04-12 06:20:00
发表于 2018-04-19 11:43 |显示全部楼层
dahe_1984 发表于 2018-04-18 20:25
html5lib
或者h5py, 没有其他的包了。

依次安装了包: bs4,lxml,html5lib
按dahe_1984提供的方法也可以做到了。 非常感谢dahe_1984的热心帮助。


从简洁的方法来说,还black_bean提供的方法直接: 把(.*)?-->(.*?)


再次谢谢大家的帮忙!

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2018-04-19 13:30 |显示全部楼层
本帖最后由 jason680 于 2018-04-19 13:31 编辑

回复 25# 51itpub

? function
1. zero or one times
ex:  a?    => empty string ("") or one "a" string
      (abc)? => empty string ("") or one "abc" string
     last(est)?  =>   "last" or "lastest"
     colou?r  => "color" or "colour"

2. only for "?"
ex:   [?] or \?

3. for not greedy 非贪婪
  only on   *?, +?, ??, {}?
  .*?

  (.*)?  => ( )?  for function 1: zero or one times

-------------------------------------------
(.*)?与(.*?)具体区别是什么
但从实际测试结果来看
.*)?是贪婪  =>  贪婪.*是造成,跟?无关
(.*?)则是非贪婪


论坛徽章:
0
发表于 2018-04-19 14:44 |显示全部楼层
牛!
root_p = re.compile(r'<Root>(.*?)</Root>', re.IGNORECASE)
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP