搜索
aardio官方社区 门户 查看主题

【已解决】使用string.gmach匹配遇到点问题

发布者: 哟哟 | 发布时间: 2013-4-4 17:20| 查看数: 2831| 评论数: 3|帖子模式

本帖最后由 哟哟 于 2013-4-7 08:18 编辑

使用 string.gmatch 匹配后写入listview
由于第二个
  1. 优惠劵码:d27nfkc8q                                    </span></td>
复制代码
没有密码,所以导致后面的密码直接提前了,这个问题该怎么解决?
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = ..win.form( bottom=399;parent=...;text="aardio Form";right=599 )
  4. winform.add(
  5. listview={ bgcolor=16777215;bottom=367;right=297;left=46;top=16;z=1;edge=1;cls="listview" }
  6. )
  7. /*}}*/

  8. winform.listview.insertColumn("优惠券号码",100,1,0x2/*_LVCFMT_CENTER*/)

  9. winform.listview.insertColumn("密码",95,2,0x2/*_LVCFMT_CENTER*/)

  10. str = /*

  11.                 <td width="30%" height="30" align="left" valign="middle" style=" border-right:1px solid #e5e5e5;"><span style=" float:left; margin-left:20px;">
  12.                                                                                  优惠劵码:1SCM130Q0J9D<br />密&nbsp;&nbsp;码:42927670                                                                        </span></td>
  13.        
  14.                 <td width="30%" height="30" align="left" valign="middle" style=" border-right:1px solid #e5e5e5;"><span style=" float:left; margin-left:20px;">
  15.          优惠劵码:d27nfkc8q                                    </span></td>
  16.        
  17.        
  18.                 <td width="30%" height="30" align="left" valign="middle" style=" border-right:1px solid #e5e5e5;"><span style=" float:left; margin-left:20px;">
  19.          特惠商品劵码:76g4mP4ReF1V5tK075Tz <br />密&nbsp;&nbsp;码:12345                                    </span></td>
  20.                
  21. */


  22. import console
  23. i = 1
  24. for m,m2 in string.gmatch(str,"劵码:([^\\<]+).+?&nbsp;码:(\d+)") {
  25.         console.log(m,m2);       
  26.         winform.listview.addItem()
  27.     winform.listview.setItemText(m,i,1)
  28.     winform.listview.setItemText(m2,i,2)
  29.     i++
  30. }
复制代码

最新评论

lujjjh 发表于 2013-4-4 18:43:08

一次不行可以分几次,尽量少写那种自己看都很费力的模式匹配表达式或是正则表达式:[code]import console; for html in string

一次不行可以分几次,尽量少写那种自己看都很费力的模式匹配表达式或是正则表达式:
  1. import console;
  2. for html in string.gmatch(str, "劵码:([\s\S]+?)\<\/span\>") {
  3.         var sn = string.match(html, "\w+");
  4.         var pwd = string.match(html, "码:(\w+)");
  5.         console.log(sn, pwd : "无密码");
  6. }
复制代码
哟哟 发表于 2013-4-4 19:03:46

[quote][size=2][color=#999999]lujjjh 发表于 2013-4-4 18:43[/color] [url=forum.php?m

lujjjh 发表于 2013-4-4 18:43
一次不行可以分几次,尽量少写那种自己看都很费力的模式匹配表达式或是正则表达式:

受教了,谢谢!没想到分几次,还需要多练练!!
xuefu3858 发表于 2016-12-27 19:57:30
多么希望从网页中捕获的信息直接写入数组,该有多好,提取出的数据也好使用

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2017-9-25 19:26 , Processed in 0.046875 second(s), 18 queries , WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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