免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2854 | 回复: 12
打印 上一主题 下一主题

[其他] 关于正则表达式反向引用的一个小疑问 [复制链接]

论坛徽章:
1
寅虎
日期:2013-08-27 16:35:24
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-23 21:41 |只看该作者 |倒序浏览
本帖最后由 ad760 于 2014-09-23 21:45 编辑

表达式 "<(\w+)\s*(\w+(=('|").*?\4)?\s*)*>.*?</\1>"。前半部分和最后都还理解,就中间('|").*?\4)?\s*这一串中到这里('|")就顺不下去了,麻烦各位坛友帮忙解释一下,最后匹配"<td id='td1'style="bgcolor:white"></td>"匹配成功。
先谢谢了:em16:

论坛徽章:
10
金牛座
日期:2014-09-16 19:02:48技术图书徽章
日期:2015-11-24 01:37:29操作系统版块每日发帖之星
日期:2015-11-18 06:20:002015年亚洲杯之沙特阿拉伯
日期:2015-04-13 17:33:462015年迎新春徽章
日期:2015-03-04 09:51:162015年辞旧岁徽章
日期:2015-03-03 16:54:15午马
日期:2014-12-04 19:33:55白羊座
日期:2014-09-17 19:34:42巨蟹座
日期:2014-09-16 21:09:4815-16赛季CBA联赛之同曦
日期:2016-06-27 23:23:07
2 [报告]
发表于 2014-09-23 21:52 |只看该作者
('|")

这个可以理解为或的关系么? 匹配  ' 或者 "

新手等大神指导。

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:51:162015年亚洲杯之阿曼
日期:2015-04-07 20:00:59
3 [报告]
发表于 2014-09-23 22:18 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
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
4 [报告]
发表于 2014-09-24 01:30 |只看该作者
回复 1# ad760

check it on the same color ...

精通正则表达式的 12 个有用资源
http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4093013&fromuid=24785593


"<(\w+)\s*(\w+(=('|").*?\4)?\s*)*>.*?</\1>"

"<td id='td1'style="bgcolor:white"></td>"


Note:
  (\w+(=('|").*?\4)?\s*)*   <== the start * can match more times

first time: id='td1'
second time: style="bgcolor:white"

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
5 [报告]
发表于 2014-09-24 08:49 |只看该作者
回复 2# qq58945591

是的
   

论坛徽章:
1
处女座
日期:2014-09-18 16:18:00
6 [报告]
发表于 2014-09-24 09:26 |只看该作者
回复 5# yestreenstars
星辰大大.*后面还跟一个?是什么意思?

   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
7 [报告]
发表于 2014-09-24 09:28 |只看该作者
回复 6# Kasiotao

问号表示0或1个
   

论坛徽章:
1
处女座
日期:2014-09-18 16:18:00
8 [报告]
发表于 2014-09-24 09:30 |只看该作者
回复 7# yestreenstars
嗯。这个我明白,我不明白的是.*应该是匹配所有的内容吧,后面再紧跟一个?有什么特殊含义么

   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
9 [报告]
发表于 2014-09-24 09:36 |只看该作者
回复 8# Kasiotao

在Perl正则中有懒惰匹配之意
   

论坛徽章:
1
寅虎
日期:2013-08-27 16:35:24
10 [报告]
发表于 2014-09-24 09:38 |只看该作者
正则表达式中的贪婪和非贪婪模式。
不加?号是尽可能多的去匹配,而加上?号则可以使匹配次数不定的表达式尽可能的少的匹配。
ex1:表达式 "<td>(.*)</td>" 与字符串 "<td><p>aa</p></td> <td><p>bb</p></td>" 匹配时,
匹配的结果是:成功;匹配到的内容是 "<td><p>aa</p></td> <td><p>bb</p></td>" 整个字符串, 表
达式中的 "</td>" 将与字符串中最后一个 "</td>" 匹配。
ex2:相比之下,表达式 "<td>(.*?)</td>" 匹配举例1中同样的字符串时,将只得到
"<td><p>aa</p></td>", 再次匹配下一个时,可以得到第二个 "<td><p>bb</p></td>"。回复 8# Kasiotao


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP