TA的每日心情 | 无聊 2024-10-6 23:27 |
---|
签到天数: 113 天 连续签到: 1 天 [LV.6]常住居民II
金牌会员
- 积分
- 1214
来自: 菲律宾
|
非业余 - aardio 编程语言 - 非官方问答社区
正则匹配
2023年11月12日0:32
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();
复制代码
|
非业余 - aardio 编程语言 - 非官方问答社区
|