在aardio的模式匹配中,默认是贪婪匹配,也就是会尽可能获取最长的匹配结果,如果想获取最短结果,则需要使用惰性匹配。
使用惰性匹配很简单,只需要在模式串限定符后面附加一个问号"?"即可实现最短匹配。
下面是aardio示例代码:
import win.ui;
/*DSG{{*/
var winform = win.form(text="简码编程 www.jianma123.com";right=668;bottom=268)
winform.add(
button={cls="button";text="贪婪匹配";left=207;top=201;right=323;bottom=238;z=1};
button2={cls="button";text="惰性匹配";left=330;top=201;right=446;bottom=238;z=4};
edit={cls="edit";text="edit";left=20;top=17;right=655;bottom=93;autohscroll=false;autovscroll=false;aw=1;edge=1;multiline=1;z=2};
edit2={cls="edit";text="匹配结果:";left=20;top=104;right=656;bottom=180;aw=1;edge=1;multiline=1;z=3}
)
/*}}*/
import inet.http;
winform.edit.text = /*A0123456789B-A0123456789B-A0123456789B-A0123456789B*/
winform.button.oncommand = function(id,event){
var 贪婪匹配结果 = string.match(winform.edit.text,"A(.*)B",);//默认是贪婪匹配
winform.edit2.text = "匹配结果:"++贪婪匹配结果;
}
winform.button2.oncommand = function(id,event){
var 惰性匹配结果 = string.match(winform.edit.text,"A(.*?)B",);//加了问号后是惰性匹配
winform.edit2.text = "匹配结果:"++惰性匹配结果;
}
winform.show()
win.loopMessage();
/*
中文编程入门教程,知识点:
string.match("字符串","模式串",开始位置)
参数@1指定目标字符串,参数@2指定查找模式串。
参数@3可选,用于指定起始位置,负数表示尾部倒计数,
返回匹配字符串,如果使用了匹配分组则返回多个对应的匹配串,
返回值的顺序对应模式串中左圆括号的开始顺序
*/
运行上面的代码,默认的贪婪匹配是取出第一个“A”到最后一个“B”之间的文本,而
惰性匹配是取出第一个“A”到第一个“B”之间的文本。所以,在某些情况下,用它来取出特定文本之间的内容是比较方便的,特别是网页采集的时候,用很简洁的代码就能取出特定标签内的文本。