找回密码
 加入
搜索
查看: 2111|回复: 11

[AU3基础] 问一个正则的小问题[已解决]

  [复制链接]
发表于 2017-9-17 19:26:50 | 显示全部楼层 |阅读模式
本帖最后由 cashiba 于 2017-9-18 20:13 编辑
<tr>
<td height="11" align="left" bgcolor="#FFFFFF"><!-- InstanceBeginEditable name="EditRegion2" -->
          <p><span class="style26">化工&nbsp;<a href="hindex_a.htm">A</a> <a href="hindex_b.htm">B</a> <a href="hindex_c.htm">C</a> <a href="hindex_d.htm">D</a> <a href="hindex_e.htm">E</a> <a href="hindex_f.htm">F</a> <a href="hindex_g.htm">G</a> <a href="hindex_h.htm">H</a> I <a href="hindex_j.htm">J</a> <a href="hindex_k.htm">K</a> <a href="hindex_l.htm">L</a> <a href="hindex_m.htm">M</a> <a href="hindex_n.htm">N</a> O <a href="hindex_p.htm">P</a> <a href="hindex_q.htm">Q</a> <a href="hindex_r.htm">R</a> <a href="hindex_s.htm">S</a> <a href="hindex_t.htm">T</a> U V <a href="hindex_w.htm">W</a> <a href="hindex_x.htm">X</a> <a href="hindex_y.htm">Y</a> <a href="hindex_z.htm">Z</a></span></p>
          <p>
                  <span class="style26">电&nbsp;&nbsp;气&nbsp;&nbsp;&nbsp;<a href="zindex_a.htm">A</a> <a href="zindex_b.htm">B</a> <a href="zindex_c.htm">C</a> <a href="zindex_d.htm">D</a> <a href="zindex_e.htm">E</a> <a href="zindex_f.htm">F</a> <a href="zindex_g.htm">G</a> <a href="zindex_h.htm">H</a> I <a href="zindex_j.htm">J</a> <a href="zindex_k.htm">K</a> <a href="zindex_l.htm">L</a> <a href="zindex_m.htm">M</a> <a href="zindex_n.htm">N</a> O <a href="zindex_p.htm">P</a> <a href="zindex_q.htm">Q</a> <a href="zindex_r.htm">R</a> <a href="zindex_s.htm">S</a> <a href="zindex_t.htm">T</a> U V <a href="zindex_w.htm">W</a> <a href="zindex_x.htm">X</a> <a href="zindex_y.htm">Y</a> <a href="zindex_z.htm">Z</a></span></p>
          <p class="style26">机 械<a href="cindex_a.htm">A</a> <a href="cindex_b.htm">B</a> <a href="cindex_c.htm">C</a> <a href="cindex_d.htm">D</a> <a href="cindex_e.htm">E</a> <a href="cindex_f.htm">F</a> <a href="cindex_g.htm">G</a> <a href="cindex_h.htm">H</a> I <a href="cindex_j.htm">J</a> <a href="cindex_k.htm">K</a> <a href="cindex_l.htm">L</a> <a href="cindex_m.htm">M</a> <a href="cindex_n.htm">N</a> O <a href="cindex_p.htm">P</a> <a href="cindex_q.htm">Q</a> <a href="cindex_r.htm">R</a> <a href="cindex_s.htm">S</a> <a href="cindex_t.htm">T</a> U V <a href="cindex_w.htm">W</a> <a href="cindex_x.htm">X</a> <a href="cindex_y.htm">Y</a> <a href="cindex_z.htm">Z</a></p>
        <!-- InstanceEndEditable --></td>
</tr>

如上代码。
如下图示。

欲提取第一行化工后的所有链接和锚字母,如
hindex_a.htm,A
hindex_b.htm,B
hindex_c.htm,C
........
Local $Arr = StringRegExp($sTxt, '<a href="(.*?)">([a-zA-Z])</a>', 3)

用这个表达式会把所有的提取出来,怎样过滤掉不需要的呢
对正则只有一丁点了解,对[^]、(?=)(?!)还不太会用.....

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2017-9-17 19:49:49 | 显示全部楼层
先切割提取的区域再正则提取
Local $Arr = StringRegExp(StringRegExpReplace($sTxt,'(?s)(.*?>化工.*?<p>)(.+)','${1}'), '<a href="(.*?)">([a-zA-Z])</a>', 3)

评分

参与人数 1金钱 +40 收起 理由
cashiba + 40 第一次见到两函数同时套用,非常感谢!

查看全部评分

 楼主| 发表于 2017-9-17 20:11:46 | 显示全部楼层
先切割提取的区域再正则提取
zghwelcome 发表于 2017-9-17 19:49

感谢指点....
如果是分两步提取的话不难,
Local $Arr = StringRegExp(StringRegExpReplace($sTxt,'化工 (.*?)</span></p>(?!<p>)','${1}'), '<a href="(.*?)">([a-zA-Z])</a>', 3)

就可以。
不过我想用一个正则表达式完成,一是学习一下正则,二是感觉一个表达式完成的效率要高些吧
发表于 2017-9-17 20:26:08 | 显示全部楼层
学习了,谢谢楼主分享
发表于 2017-9-17 21:09:32 | 显示全部楼层
回复 3# cashiba
<a href="(h.*?)">([a-zA-Z])</a>
发表于 2017-9-17 21:27:43 | 显示全部楼层
所谓正则,其实就是对字符串的归纳分析,分析字符串中有那些规律,然后就可以写了。。你的要求,最明显的就是index前面一个字符不一样啊。所以单独作为一个标志就可以提取了

评分

参与人数 1金钱 +10 收起 理由
cashiba + 10 谢谢....

查看全部评分

 楼主| 发表于 2017-9-17 22:55:50 | 显示全部楼层
所谓正则,其实就是对字符串的归纳分析,分析字符串中有那些规律,然后就可以写了。。你的要求,最明显的就 ...
yamakawa 发表于 2017-9-17 21:27

感谢指点.....
就这个实例来说,你这是最精简的表达式啦
这个例子里字符串以及文本确实很规则。假如说<a href="(.*?)">的链接字符串没有这么规则的话,要怎么过滤掉第二、第三行文本呢?
感觉用[^]、(?=)(?!)之类的可以达到目的,就是不太熟,不知道怎么写....
发表于 2017-9-18 09:50:54 | 显示全部楼层
(?s)<a href="(.*?)">([a-zA-Z])</a>(?=.+\>电.+)
正则里面叫  零宽正向先行断言

评分

参与人数 2金钱 +60 收起 理由
cashiba + 20 对了,就是这样子....
yamakawa + 40 很棒的见解

查看全部评分

发表于 2017-9-18 12:35:55 | 显示全部楼层
本帖最后由 yamakawa 于 2017-9-18 13:59 编辑

回复 7# cashiba


    8楼的可用。。。我自己写的少了后面的
.+
(?s)<a href="(.*?)">([a-zA-Z])</a>(?=.+电)

评分

参与人数 1金钱 +10 收起 理由
cashiba + 10

查看全部评分

 楼主| 发表于 2017-9-18 20:12:47 | 显示全部楼层
回复  cashiba
8楼的可用。。。我自己写的少了后面的
yamakawa 发表于 2017-9-18 12:35

对,就是这样子.....感谢!
发表于 2017-9-18 23:47:08 | 显示全部楼层
学习了,自己还是半桶水,得加油了
发表于 2017-9-19 16:01:07 | 显示全部楼层
学习下主要看里面的代码如何书写的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-19 16:35 , Processed in 0.095436 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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