cashiba 发表于 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>', 3)
用这个表达式会把所有的提取出来,怎样过滤掉不需要的呢
对正则只有一丁点了解,对[^]、(?=)(?!)还不太会用.....
{:face (396):}

zghwelcome 发表于 2017-9-17 19:49:49

先切割提取的区域再正则提取Local $Arr = StringRegExp(StringRegExpReplace($sTxt,'(?s)(.*?>化工.*?<p>)(.+)','${1}'), '<a href="(.*?)">()</a>', 3)

cashiba 发表于 2017-9-17 20:11:46

先切割提取的区域再正则提取
zghwelcome 发表于 2017-9-17 19:49 http://www.autoitx.com/images/common/back.gif
感谢指点....
如果是分两步提取的话不难,
Local $Arr = StringRegExp(StringRegExpReplace($sTxt,'化工&nbsp;(.*?)</span></p>(?!<p>)','${1}'), '<a href="(.*?)">()</a>', 3)
就可以。
不过我想用一个正则表达式完成,一是学习一下正则,二是感觉一个表达式完成的效率要高些吧

柚子爸爸 发表于 2017-9-17 20:26:08

学习了,谢谢楼主分享

yamakawa 发表于 2017-9-17 21:09:32

回复 3# cashiba <a href="(h.*?)">()</a>

yamakawa 发表于 2017-9-17 21:27:43

所谓正则,其实就是对字符串的归纳分析,分析字符串中有那些规律,然后就可以写了。。你的要求,最明显的就是index前面一个字符不一样啊。所以单独作为一个标志就可以提取了

cashiba 发表于 2017-9-17 22:55:50

所谓正则,其实就是对字符串的归纳分析,分析字符串中有那些规律,然后就可以写了。。你的要求,最明显的就 ...
yamakawa 发表于 2017-9-17 21:27 http://www.autoitx.com/images/common/back.gif
感谢指点.....
就这个实例来说,你这是最精简的表达式啦
这个例子里字符串以及文本确实很规则。假如说<a href="(.*?)">的链接字符串没有这么规则的话,要怎么过滤掉第二、第三行文本呢?
感觉用[^]、(?=)(?!)之类的可以达到目的,就是不太熟,不知道怎么写....

zghwelcome 发表于 2017-9-18 09:50:54

(?s)<a href="(.*?)">()</a>(?=.+\>电.+)正则里面叫零宽正向先行断言

yamakawa 发表于 2017-9-18 12:35:55

本帖最后由 yamakawa 于 2017-9-18 13:59 编辑

回复 7# cashiba


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

cashiba 发表于 2017-9-18 20:12:47

回复cashiba
8楼的可用。。。我自己写的少了后面的
yamakawa 发表于 2017-9-18 12:35 http://www.autoitx.com/images/common/back.gif
对,就是这样子.....感谢!

user030 发表于 2017-9-18 23:47:08

学习了,自己还是半桶水,得加油了

lf2017916 发表于 2017-9-19 16:01:07

学习下主要看里面的代码如何书写的
页: [1]
查看完整版本: 问一个正则的小问题[已解决]