请问A版,如何匹配"任意数字(长度不固定),key" 。如果字符串中存在"21,key", "39,key",如 ...
yhxhappy 发表于 2014-1-23 11:30 http://www.autoitx.com/images/common/back.gif
把匹配标志改为3即可 StringRegExp($sData, '(?mi)\|(\d+)[^|]*?' & $sKey, 3) 回复 16# afan
谢谢!
我试了,发现如果要匹配的key在第一个则不会返回,而且返回的数组很长,可以省略吗?#include <Array.au3>
$sData = "1,aaaa|1,aab|1,hhkk|2,aaaa|2,asdf|2,ghre|2,ghwe|2,xvlh|2.qkas|3,aaaa|"
$sKey = "aaaa|"
$a = StringRegExp($sData, '(?mi)\|(\d+)[^|]*?' & $sKey, 3)
_ArrayDisplay($a) 回复afan
谢谢!
我试了,发现如果要匹配的key在第一个则不会返回,而且返回的数组很长,可以省略 ...
yhxhappy 发表于 2014-1-23 12:06 http://www.autoitx.com/images/common/back.gif
我在8#的代码你在$sData首位去掉了“|”,又在关键字$sKey后面多加了“|”,所以,就如此…#include <Array.au3>
$sData = "|1,aaaa|1,aab|1,hhkk|2,aaaa|2,asdf|2,ghre|2,ghwe|2,xvlh|2.qkas|3,aaaa|"
$sKey = "aaaa"
$a = StringRegExp($sData, '(?mi)\|(\d+)[^|]*?' & $sKey, 3)
_ArrayDisplay($a) 回复 18# afan
我在关键字后加"|"是为了区分"aaaa|"和"aaaaa|"的区别。还请指导! 回复afan
我在关键字后加"|"是为了区分"aaaa|"和"aaaaa|"的区别。还请指导!
yhxhappy 发表于 2014-1-23 12:57 http://www.autoitx.com/images/common/back.gif
那就是完全匹配啊,我在13#不是已经回复过了…#include <Array.au3>
$sData = "|1,aaaa|1,aab|1,hhkk|2,aaaaa|2,asdf|2,ghre|2,ghwe|2,xvlh|2.qkas|3,aaaa|"
$sKey = "aaaa"
Local $a = StringRegExp($sData, '(?mi)\|(\d+),' & $sKey & '(?=\|)', 3)
_ArrayDisplay($a) 非常大的数组的话,逐个遍历是非常没有效率的,有特定的算法来实现高效的数组搜索,例如折半查询法等等。 本帖最后由 nmgwddj 于 2014-1-23 17:43 编辑
回复 1# txm888
http://blog.csdn.net/likezhaobin/article/details/6908257
可看看这几种算法,在高级语言中谈到的比较多。可以在排序算法中找到一些灵感。
还有S大提到的二分法查找
http://www.enet.com.cn/eschool/video/autohtml/310/1261/31.shtml 回复 21# skyfree
感谢S大,很好地很强的见解 回复 22# nmgwddj
你们都很精通,向你学习了,感谢参与 回复 23# txm888
参照22楼,折半法比较基础常用。 折半未必最好,黄金分割可以减少至少一半的计算次数
页:
1
[2]