1、今天是2023年11月11日双十一节,\d{4}\年\d{2}\月\d{2}日 得到:2023年11月11日
2、转换时间格式为yyyy-mm-dd:
io.open();//打开控制台 var str = /* 2000-3-03 2001-10-1 2001-2-2 */ str=string.replace(str,"-(\d)!<\D>","-0\1",) io.print(str ); execute("pause") //按任意键继续 io.close();//关闭控制台
3、提取数字:
io.open();//打开控制台 text=/* 使用777777可以第一时间收5555786到“提问有新5687987回答”“回答被采纳”“网友求助”的通6598546 您想在自己的网站上展示百度“知道”上的5264859问答吗?来吧! 如要投诉或提5985468出意见建议。 */ for m in string.gmatch( text,"\d+") { io.print(m) } execute("pause") //按任意键继续 io.close();//关闭控制台
4、换行了都能匹配:
import console; import web.mshtml var html = /* <img src="afds123 fdgd.jpg" /> <div> <img src= "aaabbbccc.jpg" /> </div> */ var mshtm = web.mshtml(); mshtm.write( html ) for i,img in mshtm.eachAll("img") { console.log(i, img.src ) } console.pause(true);
5、多种格式的数据一次性匹配出来
import console; io.open();//打开控制台 str = /* <a href='maxred.aspx?ID=56869657' target="_blank">稿件1309753</a> <td align="center" valign="middle" style="width:50px;"></td> <td align="left" valign="middle" style="width:60px;"> <div class="per_y">0%</div></td> <td align="center" valign="middle" style="width:60px;"> 26.1%</td> <td align="center" valign="middle" style="width:60px;"> 31.5%</td> #------------------------------------------------------------------------- <a href='maxred.aspx?ID=56869657' target="_blank">稿件1209751</a> <td align="center" valign="middle" style="width:50px;"></td> <td align="left" valign="middle" style="width:60px;"> <div class="per_y">12.3%</div></td> <td align="center" valign="middle" style="width:60px;"> 56.1%</td> <td align="center" valign="middle" style="width:60px;"> 63.2%</td> */ for m, m1 in string.gmatch(str, '\\<a.+?稿件([^\\<]+).+?<@per_y">@>(.+?)\\<.+?') io.print(m, m1) console.pause(true);
6、提取二维数组;
import win.ui; /*DSG{{*/ var winform = ..win.form(text="aardio Form";right=599;bottom=399;parent=...) winform.add( button={cls="button";text="提数组";left=445;top=318;right=551;bottom=353;z=2}; edit={cls="edit";left=17;top=26;right=394;bottom=223;edge=1;multiline=1;z=1} ) /*}}*/ func = function(str) begin var ret = {}; for m in string.gmatch(str,"start,(.+?)end;") { var t = {} for m2 in string.gmatch(m,"\:(.+?)\,") { table.push(t, m2) } table.push(ret, t) } return ret; end; lineShow = function(line) begin winform.edit.text += (line + '\r\n') end; winform.button.oncommand = function(id,event){ var str = 'start,1:aaaa,2:bbbb,3:cccc,4:dddd,end;start,1:eeee,2:ffff,3:gggg,4:hhhh,end;' lineShow('解析前:\r\n' + str) lineShow("解析后:") var array = func(str) for(i=1;#array;1){ var t = array; lineShow("---" + i + "---") for(j=1;#t;1){ lineShow(j + ") " + t[j]) } } } winform.show() win.loopMessage();
另一种二维数组提取法:
import win.ui; /*DSG{{*/ var winform = win.form(text="模式匹配测试程序";right=599;bottom=399;) winform.add( button={cls="button";text="提数组";left=445;top=318;right=551;bottom=353;z=2}; edit={cls="edit";left=17;top=26;right=394;bottom=223;edge=1;multiline=1;z=1} ) /*}}*/ winform.button.oncommand = function(id,event){ var array = {} for m1,m2,m3,m4 in string.gmatch( 'start,1:aaaa,2:bbbb,3:cccc,4:dddd,end;start,1:eeee,2:ffff,3:gggg,4:hhhh,end;',"start,1\:(\S+?),2\:(\S+?),3\:(\S+?),4\:(\S+?),end;" ) { //添加到二维数组 table.push( array, {m1;m2;m3;m4} ) //写入文本框 winform.edit.appendText( m1,m2,m3,m4 ,'\r\n') } //在文本框中显示二维数组 winform.edit.appendText( table.tostring(array),'\r\n' ) } winform.show() win.loopMessage();